Sizin gibi okuyucular MUO'yu desteklemeye yardımcı oluyor. Sitemizdeki bağlantıları kullanarak bir satın alma işlemi gerçekleştirdiğinizde, bir ortaklık komisyonu kazanabiliriz.
Bir web sitesini ziyaret etmek istediğinizde kullandığınız internet tarayıcısı o siteden bazı veriler alır. Sonuç olarak, cihazınız ile web sitesi arasında bir diyalog oluşur. Bu, HTTP adı verilen protokol ile olur. Bu diyaloğa müdahale edilerek bazı ek güvenlik önlemleri alınması mümkündür.
Bir web sitesi işletiyorsanız veya bir web geliştiricisi olarak kariyer hedefliyorsanız, HTTP güvenlik başlıkları sizin için çok değerlidir çünkü hem kullanıcının hem de web sitesinin güvenliğinde aktif rol oynarlar.
HTTP Katı Taşıma Güvenliği (HSTS) Nedir?
HTTP Sıkı Aktarım Güvenliği (HSTS), kullanıcıları tarayıcılarında yaptıkları her istek için HTTPS kullanmaya zorlar. Bu, sürüm düşürme gibi siber saldırılarla mücadele etmenin ve tüm trafiğin güvenliğini sağlamanın sağlam bir yoludur.
HSTS'yi etkinleştirmek oldukça kolaydır. İstemci ve sunucu arasındaki diyaloğu düşünün. Bir siteye tarayıcınız aracılığıyla erişmeye çalıştığınızda, müşteri sizsiniz. Açmak istediğiniz site sunucuya bağlıdır. Amacınız sunucuya "Bu siteyi açmak istiyorum" demek. Bu bir istek işlemidir. Sunucu ise istenilen şartları sağlıyorsanız sizi siteye yönlendiriyor.
Bu örnek HTTP Başlık bayrağıyla ilgili olarak bunu aklınızda bulundurun:
Sıkı Taşıma Güvenliği: max-age=16070200;
Bu bayrağı HTTP yanıtının başlık bilgisine eklediğinizde, kullanıcı tarafından oluşturulan tüm istekler HTTPS olur. Kullanıcı buraya ne yazarsa yazsın tarayıcı otomatik olarak protokolü HTTPS olarak değerlendirecek ve güvenli bağlantı kuracaktır.
HSTS Nasıl Kullanılır?
Tüm bu HTTP başlık bilgilerini kod katmanına eklemek yerine, bunu Apache, IIS, Nginx, Tomcat ve diğer web sunucusu uygulamalarında yapabilirsiniz.
Apache'de HSTS'yi etkinleştirmek için:
LoadModule headers_module modülleri/mod_headers.so
<Sanal Ana Bilgisayar *:443>
her zaman başlık ayarlamakSıkı-Ulaşım-Güvenlik "maksimum yaş=2592000; Alt Etki Alanlarını dahil et"
</VirtualHost>
Nginx'te HSTS'yi etkinleştirmek için:
add_header Strict-Transport-Security max-age=2592000; dahilAlt alanlar
HSTS'yi IIS web.config ile etkinleştirmek için:
<system.webSunucusu>
<http Protokolü>
<özel Başlıklar>
<isim ekle="Sıkı Taşıma Güvenliği" değer="maksimum yaş=63072000"/>
</customHeaders>
</httpProtocol>
</system.webServer>
Cloudflare Kullanıcıları İçin
Cloudflare, Anahtarsız SSL hizmeti ile herkes için ücretsiz HTTPS hizmeti sağlar; HSTS ön yüklemesine başvurmadan önce, sertifikanızın size ait olmadığını bilmelisiniz. Birçok site SSL sertifikası kullanıyor çünkü verileri güvende tutmanın basit bir yolu.
Ancak, şimdi Cloudflare HSTS özelliğini destekler. Önyükleme dahil tüm HSTS özelliklerini, web sunucusundaki yapılandırmalarla uğraşmadan Cloudflare web arayüzü üzerinden etkinleştirebilirsiniz.
X-Frame-Options Nedir?
X-Frame-Options, tüm modern tarayıcılar tarafından desteklenen bir güvenlik başlığıdır. X-Frame-Options, Clickjacking gibi tıklama hırsızlığına karşı koruma sağlamayı amaçlar. Adından da anlaşılacağı gibi, iframe olarak da bilinen savunmasız bir satır içi çerçevenin çalışmasıyla ilgilidir. Bunlar, sitenizdeki diğer kaynaklardan gelen içeriği kullanabilmeniz için "üst" siteye başka bir HTML sayfası yerleştiren bir sitedeki öğelerdir. Ancak saldırganlar, kullanıcıların yapmak istemedikleri eylemleri gerçekleştirmelerini sağlamak için kendi kontrolleri altındaki iframe'leri kullanır.
Bu nedenle saldırganların sitede iframe bulmasını engellemeniz gerekiyor.
X-Frame-Options Nerede ve Nasıl Kullanılır?
X-Frame-Options'ın yaptığını, bazı geliştiriciler JavaScript gibi dillerle yapmaya çalışır. Bu tamamen yanlış değil. Ancak birçok yönden yazılan kodlar yeterli olmadığı için yine de bir risk var. Bu yüzden bu görevi kullandığınız internet tarayıcısına bırakmak akıllıca olacaktır.
Ancak bir geliştirici olarak X-Frame-Options hakkında bilinmesi gereken üç parametre vardır:
- Reddetmek: Sayfanın herhangi bir iframe'de çağrılmasını tamamen engelleyin.
- SAMEORİJİN: Kendi alanınızın dışındaki herhangi bir etki alanının iframe içinde çağrı yapmasını engelleyin.
- İZİN URİ'DEN: Parametre olarak verilen URI'nin iframe çağrılarını kabul edin. Başkalarını engelle.
Burada, SAMEORİJİN özelliği daha çok öne çıkıyor. Çünkü farklı subdomainlerinizdeki uygulamaları kendi içinde iframeler ile çağırabilirken, saldırganın kontrolündeki domain üzerinden çağrılmasını engelleyebilirsiniz.
İşte SAMEORIGIN ve X-Frame-Options'ı NGINX, Apache ve IIS ile nasıl kullanabileceğinize dair örnekler:
Nginx için X-Frame-Options SAMEORIGIN'i Kullanma:
add_header X-Frame-Options SAMEORIGIN;
Apache için X-Frame-Options SAMEORIGIN'i Kullanma:
Başlık her zaman X-Frame-Options SAMEORIGIN'in sonuna eklenir
IIS için X-Frame-Options SAMEORIGIN'i kullanma:
<http Protokolü>
<özel Başlıklar>
<isim ekle="X-Frame-Seçenekleri" değer="SAMEORİJİN" />
</customHeaders>
</httpProtocol>
Yalnızca SAMEORIGIN başlığını eklemek, ziyaretçileriniz için daha fazla güvenlik sağlayacaktır.
X-XSS Koruması Nedir?
X-XSS-Protection başlık bilgilerinin kullanılması, kullanıcıları XSS saldırılarına karşı koruyabilir. İlk olarak, ortadan kaldırmanız gerekir XSS güvenlik açıkları uygulama tarafında. Kod tabanlı güvenlik sağlandıktan sonra tarayıcılardaki XSS açıklarına karşı X-XSS-Protection başlıkları gibi ek önlemler alınması gerekmektedir.
X-XSS Korumasını Kullanma
Modern tarayıcılar, uygulama tarafından oluşturulan içeriği filtreleyerek potansiyel XSS yüklerini algılayabilir. Bu özelliği X-XSS-Protection başlık bilgisi ile etkinleştirmek mümkündür.
Nginx'te X-XSS-Protection başlığını etkinleştirmek için:
add_header X-Frame-X-XSS-Koruma 1;
Apache'de X-XSS-Protection başlığını etkinleştirmek için:
Başlık her zaman X-XSS-Protection 1'i ekler
IIS'de X-XSS-Protection başlığını etkinleştirmek için:
<http Protokolü>
<özel Başlıklar>
<isim ekle="X-XSS-Koruma" değer="1" />
</customHeaders>
</httpProtocol>
Varsayılan olarak XSS saldırılı kod bloğunun çalışmasını önlemek için şöyle bir şey kullanabilirsiniz:
X-XSS-Koruma: 1; mod=blok
Potansiyel olarak tehlikeli bir durum varsa ve tüm içeriğin işlenmesini engellemek istiyorsanız bu küçük değişikliğin yapılması gerekir.
X-Content-Type-Options Nedir?
Tarayıcılar, web uygulaması tarafından kendilerine sunulan içerik üzerinde MIME Type Sniffing adlı bir analiz gerçekleştirir. Örneğin, bir PDF dosyasına veya PNG dosyasına erişim talebi varsa, HTTP yanıtı üzerinde analiz yapan tarayıcılar dosya türünü tahmin eder.
Bir jpeg uzantılı, ancak aslında Metin/HTML içeriğine sahip bir dosya düşünün. Yükleme modülündeki uzantıları kullanıp korumaları geçtikten sonra dosya başarıyla yüklenir. Yüklenen dosya URL aracılığıyla çağrılır ve MIME Tipi koklama, sonuç olarak Metin/HTML döndürür. İçeriği HTML olarak işler. İşte o zaman XSS güvenlik açığı ortaya çıkar.
Yani MIME Type sniffing ile tarayıcıların içeriğe karar vermesini engellemelisiniz. Bunu yapmak için nosniff'i kullanabilirsiniz.
Nginx için X-Content-Type-Options başlığı:
add_header X-Content-Type-Options nosniff;
Apache için X-Content-Type-Options başlığı:
Başlık her zaman X-Content-Type-Options nosniff
IIS için X-Content-Type-Options başlığı:
<http Protokolü>
<özel Başlıklar>
<isim ekle="X-İçerik-Türü-Seçenekleri" değer="burun çekme" />
</customHeaders>
</httpProtocol>
HttpOnly Çerez Bayrağı Nedir?
Web uygulamaları, oturum kimliği aracılığıyla kullanıcıların oturumlarını izler. Tarayıcılar bunu saklayacak ve tanımlama bilgisinin kapsamı dahilindeki her HTTP isteğine otomatik olarak ekleyecektir.
Bu mümkün çerezleri amaçlar için kullanmak Ancak, oturum anahtarının aktarımı dışında. Bilgisayar korsanları, yukarıda belirtilen XSS güvenlik açığını kullanarak veya bir Siteler Arası İstek Sahteciliği (CSRF) saldırısı yoluyla kullanıcı verilerini bulabilir. Peki güvenlik açısından en önemli çerezler hangileridir?
Resim galerisinde en son tıkladığınız resimdeki bilgileri örnek olarak düşünebilirsiniz. Bu sayede HTTP trafiği daha az olur ve yükün bir kısmı kullanıcının internet tarayıcısı tarafından client-side scripting ile çözülebilir.
Bu nerede Yalnızca Http içeri gelir. Aşağıda çerez atamasının nasıl olması gerektiğine dair bir örnek verilmiştir:
Ayarlamak-Kurabiye: kullanıcı=t=cdabe8a1c2153d726; yol=/; Yalnızca Http
Gönderilen HttpOnly değerine dikkat edin. Set-Kurabiye operasyon. Tarayıcı bunu görecek ve tanımlama bilgisine şu adresten erişildiğinde HttpOnly bayrağıyla değerleri işlemeyecektir: belge.çerez değişken. Set-Cookie işleminde kullanılan bir diğer bayrak da Secure bayrağıdır. Bu, çerez değerinin başlığa yalnızca HTTPS istekleri için ekleneceğini gösterir. E-ticaret siteleri genellikle ağ trafiğini azaltmak ve performansı artırmak istedikleri için kullanırlar.
Bu yöntemi kullanarak, kullanıcıların kullanıcı adları, şifreler ve kredi kartı bilgileri gibi kritik verilerini gizleyebilirsiniz. Ama bir problem var. Oturum açma işlemini tamamlayan kullanıcılara, Güvenli bayrağı olmadan bir çerez değeri atanır. Kullanıcı, HTTPS olmayan bağlantılara bir HTTP isteği yaptığında oturum anahtarına sahip olabilir. Güvenli bayrağı eklemek kolaydır:
Ayarlamak-Kurabiye: kullanıcı=t=cdabe8a1c2153d726; yol=/; Güvenli
Ne zaman HttpOnly kullanmamalısınız? Javascript'e güveniyorsanız, bunun yerine sitenizi daha az güvenli hale getirebileceğinden dikkatli olmalısınız.
Küçük Adımlar Daha Geniş Web Güvenliği İçin Çalışıyor
Web uygulamalarının güvenliğini artırmak için gelişmiş yazılım ve sunucu bilgisine ihtiyacınız yoktur. Sadece birkaç satırı değiştirerek bazı ciddi saldırıları önleyebilirsiniz. Tabii ki, bu yeterli değil. Ancak, web sitesi güvenliği için küçük ama etkili bir adımdır. Bilgi en iyi önleyicidir, bu nedenle HTTPS'nin aktarım sırasında verileri nasıl koruduğuna dair ince nüansları bilmek de yararlıdır.