HTTP Güvenlik Başlıkları
HTTP'de istemci güvenliği sağlayan başlıklar
Bir sitenin güvenlik başlıkları kullanıp kullanmadığı https://securityheaders.com/ adresinden kontrol edilebilir.
HTTP güvenlik başlıkları, belli başlı zaafiyetlerin önüne geçmek için geliştirilmiş başlıklardır. Bunlardan bazıları:
Content-Security-Policy
Web'den gelen her içeriğe güvenmeyip; sadece belirlenen içeriklere güvenme (whitelisting) sağlayan güvenlik başlıklarıdır.
Strict-Transport-Security
Bu başlığı gören tarayıcı isteği istinasız https'e götürür.
X-XSS-Protection
XSS ataklarını engellemeye yönelik bir başlıktır.
X-Frame-Options
Sitenin bir IFRAME'de çalıştırılıp çalıştırılamayacağını sanırlayan bir güvenlik başlığıdır.
Aşağıda pentest.blog sitesine sadece başlık bilgilerin getirilmesi için GET isteği yapılmış:
curl https://pentest.blog --head
Gelen yanıt ise aşağıdaki gibi:
HTTP/1.1 200 OK
Date: Sat, 31 Aug 2019 14:38:01 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Set-Cookie: __cfduid=d39774706da6895acd9195c26798a588c1567262280; expires=Sun, 30-Aug-20 14:38:00 GMT; path=/; domain=.pentest.blog; HttpOnly
Link: <https://pentest.blog/wp-json/>; rel="https://api.w.org/"
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Server: cloudflare
CF-RAY: 50efbee7bdb2d230-SOF
Gelen yanıt başlığında Set-Cookie, HttpOnly, X-Frame-Options, XSS-Protection gibi önemli güvenlik başlıkları kullanılmış.
HttpOnly güvenlik başlığı flag'i ile javascript üzerinden örn XSS atağı aracılğıyla document.cookie ile oturum bilgileri çerez(cookie) çalınamamasını sağlamaya çalışır.
X-Frame-Options güvenlik başlığı ise <IFRAME> in scope'una ayar getirir. Örneğin, X-Frame-Options: SAMEORIGIN ise sadece sitenin kendi IFRAME'e kendini ekleyebilir. Öte yanda DENY ise sitenin kendi dahil hiçbir site IFRAME ile ekleme yapamaz.
X-XSS-Protection güvenlik başlığı ise XSS'i önlemeye yardımcı bir güvenlik başlığıdır. Tarayıcılar XSS auditor yapıyor. Ancak 0 verildiğinde bilgi ifşası gibi durumlar olabiliyor. https://portswigger.net/daily-swig/google-deprecates-xss-auditor-for-chrome sitesinde detaylara bakılabilir. Bazı büyük siteler bu ifşa durumundan dolayı bu güvenlik başlığını kullanmamaktadır.
Örneğin facebook için başlıklara bakılırsa:
curl https://www.facebook.com --head
Gelen yanıt da aşağıdaki gibi:
HTTP/1.1 200 OK
Set-Cookie: fr=1T8OJh1G57XJxMmII..BdaolV.Hj.AAA.0.0.BdaolV.AWVp16sr; expires=Sun, 30-Aug-2020 14:51:00 GMT; Max-Age=31535999; path=/; domain=.facebook.com; secure; httponly
Set-Cookie: sb=VYlqXfsDpu8GO_M-Q01E2wfN; expires=Mon, 30-Aug-2021 14:51:01 GMT; Max-Age=63072000; path=/; domain=.facebook.com; secure; httponly
Cache-Control: private, no-cache, no-store, must-revalidate
Pragma: no-cache
Strict-Transport-Security: max-age=15552000; preload
Vary: Accept-Encoding
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 0
Expires: Sat, 01 Jan 2000 00:00:00 GMT
Content-Type: text/html; charset="utf-8"
X-FB-Debug: qULCkVTGie1khZK2Pa4XTdlGlmBoNOkSPgOXX99gKzIArZDYtJbctASJOkfcFCcNrrkdCT4CvRPjR5cOz1/A/A==
Date: Sat, 31 Aug 2019 14:51:01 GMT
Transfer-Encoding: chunked
Connection: keep-alive
Görüldüğü gibi X-XSS-Protection: 0 yapılmış. X-Frame-Options da DENY yapılmış. Ayrıca Set-Cookie ile sunucudan istemciye gelen yanıtta çerezler secure ile sadece HTTPS üzerinden ve HttpOnly ile tarayıcıdan javascript ile çerezlerin alınanaması sağlanıp gönderilmiş.
Strict-Transport-Security ise SSL ile ilgili güvenlik başlığı. Sunucularda genellikle http ile yapılan istekleri https'e yönlendiren direktifler bulunur. Dolayısıyla https ile güvenlik şifreli iletişime geçmeden önce http ile iletişim kurulması mümkündür. Dolayısıyla bu iletişim ortadaki adam (man in the middle) saldırısına açıktır. Tarayıcının doğrudan iletişimi https üzerinden yapmasını sağlamak için bu sihilrli güvenlik başlığı da kullanılmalıdır.
Subresource Integrity ile web sitesinin kullandığı harici javascript dosyalarının bütünlüğü kontrol edilebilir. Örneğin,
<script src = "https://cdn.site.com/jquery.min.js"
integrity="sha256 - <sha256 özeti>"
cross-origin="anonymous">
</script>
Diğer çok önemli bir güvenlik başlığı da Content-Security-Policy'dir. Programalada stongly type mevzusunun html tarayıcılarda hayat bulmuş halidir de denebilir. Siteye eklenen harici kaynakların yüklenmesine sınırlandırma getirir. Ana amaç XSS'e engel olmaktır.
Kaynaklar:
Last updated
Was this helpful?