# Missing HTTP Security Headers

### HTTP Güvenlik Başlığı Nedir

* HTTP güvenlik başlıkları, bir web uygulamasının tarayıcılara gönderdiği özel HTTP başlıklarıdır.&#x20;
* Amaçları, uygulamanın güvenliğini artırmak, saldırı yüzeyini azaltmak ve tarayıcı davranışlarını güvenlik açısından daha kontrollü hale getirmektir.&#x20;
* Bu başlıklar sayesinde XSS, clickjacking, MIME sniffing, veri sızıntısı gibi birçok saldırıya karşı ek koruma sağlanabilir.

### Kontrol

* <https://securityheaders.com/>

```bash
shcheck.py https://example.com
```

### Content-Security-Policy (CSP)

* XSS saldırılarının riskini azaltır.
* Sitenin hangi kaynaklardan içerik alabileceğini kısıtlar.
* Örneğin saldırgan bir xss zafiyeti keşfetse bile csp dışardan bir js dosyası yüklemesini engeller.

```http
Content-Security-Policy: default-src 'self'; script-src 'self' https://example.com
```

### Strict-Transport-Security (HSTS)

* MITM saldırılarını engeller.
* Tarayıcının siteye yalnızca HTTPS üzerinden bağlanmasını zorunlu kılar.

```http
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
```

### X-Frame-Options

* Sayfanın başka bir site içinde \<iframe> ile gömülmesini engeller veya kısıtlar.
* Clickjacking saldırılarına karşı koruma sağlar.

```http
X-Frame-Options: DENY
```

### X-Content-Type-Options

* Tarayıcıların içerik türünü (MIME type) yanlış yorumlamasını engeller.
* Mime sniffing yöntemi ile yapılan xss saldırılarını engeller.

```http
X-Content-Type-Options: nosniff
```

### Referrer-Policy

* Hangi "Referer" bilgisinin başka sitelere aktarılacağını kontrol eder.
* Örneğin token içeren bir url üzerinden başka bir siteye gittiğinde referrer başlığı bu tokeni diğer sitenin loglarında sızdırabilir.

```http
Referrer-Policy: no-referrer
```

### Permissions-Policy

* Tarayıcı API’lerinin (kamera, mikrofon, konum, sensörler vb.) kullanımını kontrol eder.
* Belirtilen API'lere erişimi engeller.
* Bir saldırgan XSS saldırısı ile hedefin tarayıcısına erişse bile kamera ve mikrofon gibi özellikleri kullanamaz.

```http
Permissions-Policy: geolocation=(), microphone=()
```
