Web uygulamalarını saldırılardan koruyan ve kullanıcı güvenliğini artıran İçerik Güvenliği Politikası (CSP) ve diğer ön yüz güvenlik başlıkları için kapsamlı bir rehber.
Ön Yüz Güvenlik Başlıkları: İçerik Güvenliği Politikası'nda (CSP) Uzmanlaşmak
Günümüzün dijital dünyasında, web uygulamalarının giderek daha karmaşık ve birbirine bağlı hale geldiği bir ortamda, güvenlik tehditlerine karşı korunma büyük önem taşımaktadır. Arka yüz (backend) güvenliği genellikle büyük ilgi görse de, ön yüz (frontend) güvenliği de aynı derecede kritiktir. Ön yüz güvenlik başlıkları, tarayıcıya nasıl davranması gerektiğini bildiren ve kullanıcıları çeşitli saldırılardan koruyan bir mekanizma sağlayarak ilk savunma hattı olarak görev yapar. Bu başlıklar arasında, İçerik Güvenliği Politikası (CSP), geniş bir risk yelpazesini azaltmak için güçlü bir araç olarak öne çıkmaktadır.
Ön Yüz Güvenlik Başlıkları Nedir?
Ön yüz güvenlik başlıkları, bir web sunucusunun tarayıcıya gönderdiği HTTP yanıt başlıklarıdır. Bu başlıklar, tarayıcının aldığı içeriği nasıl işlemesi gerektiğine dair talimatlar içerir. Aşağıdaki gibi yaygın saldırıları önlemeye yardımcı olurlar:
- Siteler Arası Betik Çalıştırma (XSS): Güvenilir web sitelerine kötü amaçlı betiklerin enjekte edilmesi.
- Tıklama Tuzağı (Clickjacking): Kullanıcıları algıladıklarından farklı bir şeye tıklamaları için kandırmak.
- Ortadaki Adam Saldırıları (Man-in-the-Middle): Kullanıcı ile sunucu arasındaki iletişimin kesilmesi.
En önemli ön yüz güvenlik başlıklarından bazıları şunlardır:
- İçerik Güvenliği Politikası (CSP): Tarayıcının hangi kaynaklardan kaynak yüklemesine izin verildiğini tanımlar.
- Strict-Transport-Security (HSTS): Tarayıcıyı web sitesiyle olan tüm iletişim için HTTPS kullanmaya zorlar.
- X-Frame-Options: Web sitesinin bir iframe içine gömülmesini engelleyerek tıklama tuzağı saldırılarını azaltır.
- X-XSS-Protection: Tarayıcının yerleşik XSS filtresini etkinleştirir. (Not: Genellikle CSP tarafından geçersiz kılınsa da hala bir savunma katmanı sağlayabilir).
- Referrer-Policy: İsteklerle gönderilen yönlendiren (referrer) bilgisi miktarını kontrol eder.
- Feature-Policy (şimdi Permissions-Policy): Geliştiricilerin tarayıcı özelliklerini ve API'lerini seçici olarak etkinleştirmesine ve devre dışı bırakmasına olanak tanır.
İçerik Güvenliği Politikasına (CSP) Derinlemesine Bakış
İçerik Güvenliği Politikası (CSP), kullanıcı aracısının belirli bir sayfa için hangi kaynakları yüklemesine izin verildiğini kontrol eden bir HTTP yanıt başlığıdır. Esasen onaylanmış içerik kaynaklarını beyaz listeye alarak XSS saldırıları riskini önemli ölçüde azaltır. Betikler, stil sayfaları, resimler ve yazı tipleri gibi kaynakların hangi kökenlerden yüklenebileceğini açıkça tanımlayarak, CSP saldırganların web sitenize kötü amaçlı kod enjekte etmesini çok daha zor hale getirir.
CSP Nasıl Çalışır?
CSP, tarayıcıya farklı içerik türleri için onaylanmış kaynakların bir listesini sunarak çalışır. Tarayıcı CSP'yi ihlal eden bir kaynakla karşılaştığında, kaynağı engeller ve ihlali raporlar. Bu engelleme mekanizması, bir saldırgan HTML'ye enjekte etmeyi başarsa bile kötü amaçlı kodun yürütülmesini önler.
CSP Yönergeleri
CSP yönergeleri, bir CSP politikasının temel bileşenleridir. Farklı kaynak türleri için izin verilen kaynakları belirtirler. En sık kullanılan yönergelerden bazıları şunlardır:
- default-src: Tüm kaynak türleri için varsayılan kaynağı ayarlar. Bu, diğer daha spesifik yönergeler tanımlanmadığında uygulanan bir geri dönüş yönergesidir.
- script-src: JavaScript için izin verilen kaynakları belirtir.
- style-src: CSS stil sayfaları için izin verilen kaynakları belirtir.
- img-src: Resimler için izin verilen kaynakları belirtir.
- font-src: Yazı tipleri için izin verilen kaynakları belirtir.
- media-src: Ses ve video için izin verilen kaynakları belirtir.
- object-src: Flash gibi eklentiler için izin verilen kaynakları belirtir. (Mümkünse eklentilere izin vermekten kaçınmak en iyisidir).
- frame-src: Çerçeveler (iframe'ler) için izin verilen kaynakları belirtir.
- connect-src: Ağ istekleri (AJAX, WebSockets) için izin verilen kaynakları belirtir.
- base-uri: Bir
<base>öğesinde kullanılabilecek URL'leri kısıtlar. - form-action: Formların gönderilebileceği URL'leri kısıtlar.
- frame-ancestors: Bir sayfayı
<frame>,<iframe>,<object>,<embed>veya<applet>kullanarak gömebilecek geçerli ebeveynleri belirtir. Bu yönerge Tıklama Tuzağı'na karşı koruma sağlar. - upgrade-insecure-requests: Kullanıcı aracılarına, bir sitenin tüm güvensiz URL'lerini (HTTP üzerinden yüklenen) güvenli URL'lerle (HTTPS üzerinden yüklenen) değiştirilmiş gibi ele almalarını talimatını verir. Bu yönerge, HTTP'den HTTPS'ye geçiş sürecinde olan web siteleri için tasarlanmıştır.
- report-uri: Tarayıcının CSP ihlalleri hakkında rapor göndermesi gereken bir URL belirtir. `report-to` lehine kullanımdan kaldırılmıştır.
- report-to: Bir `Report-To` başlığında tanımlanan bir grup adını belirtir. Bu, birden çok raporlama uç noktası belirtmek de dahil olmak üzere raporlama üzerinde daha hassas kontrol sağlar.
CSP Kaynak Değerleri
Kaynak değerleri, kaynakların yüklenmesine izin verilen kökenleri tanımlar. Bazı yaygın kaynak değerleri şunlardır:
- *: Herhangi bir kaynaktan içeriğe izin verir (Bunu üretim ortamında kullanmaktan kaçının!).
- 'self': Korunan belgeyle aynı kökenden (şema, ana bilgisayar ve bağlantı noktası) içeriğe izin verir.
- 'none': Herhangi bir kaynaktan içeriğe izin vermez.
- 'unsafe-inline': Satır içi JavaScript ve CSS kullanımına izin verir (Bunu üretim ortamında kullanmaktan kaçının!).
- 'unsafe-eval': Dinamik kod değerlendirmesi kullanımına izin verir (ör.
eval(),Function()) (Bunu üretim ortamında kullanmaktan kaçının!). - 'strict-dynamic': İşaretlemede bulunan bir betiğe bir nonce veya hash ile eşlik edilerek açıkça verilen güvenin, o atanın yüklediği tüm betiklere yayılacağını belirtir.
- 'unsafe-hashes': Belirli satır içi olay işleyicilerine izin verir. Bu, karmaşıklığı ve sınırlı faydası nedeniyle genellikle önerilmez.
- data:: Kaynakların data URL'lerinden (ör. gömülü resimler) yüklenmesine izin verir. Dikkatli kullanın.
- mediastream:: `mediastream:` URI'lerinin bir medya kaynağı olarak kullanılmasına izin verir.
- blob:: `blob:` URI'lerinin bir medya kaynağı olarak kullanılmasına izin verir.
- filesystem:: Kaynakların bir dosya sisteminden yüklenmesine izin verir.
- https://example.com: Belirli bir alan adı ve bağlantı noktasından içeriğe izin verir.
- *.example.com: example.com'un herhangi bir alt alan adından içeriğe izin verir.
- nonce-{random-value}: Eşleşen bir nonce özniteliğine sahip betiklere veya stillere izin verir. Bu, her istek için sunucu tarafında rastgele bir nonce değeri oluşturulmasını gerektirir.
- sha256-{hash-value}: Eşleşen bir SHA256, SHA384 veya SHA512 karmasına sahip betiklere veya stillere izin verir.
CSP Modları: Zorunlu vs. Yalnızca Raporlama
CSP iki modda dağıtılabilir:
- Zorunlu Mod: Bu modda, tarayıcı CSP'yi ihlal eden tüm kaynakları engeller. Bu, üretim ortamları için önerilen moddur. CSP, `Content-Security-Policy` başlığı kullanılarak gönderilir.
- Yalnızca Raporlama Modu: Bu modda, tarayıcı CSP ihlallerini raporlar ancak kaynakları engellemez. Bu, bir CSP'yi zorunlu kılmadan önce test etmek ve değerlendirmek için kullanışlıdır. CSP, `Content-Security-Policy-Report-Only` başlığı kullanılarak gönderilir.
CSP Uygulama: Adım Adım Kılavuz
CSP uygulamak göz korkutucu görünebilir, ancak yapılandırılmış bir yaklaşım izleyerek web uygulamanızı etkili bir şekilde güvence altına alabilirsiniz.
1. Yalnızca Raporlama Politikası ile Başlayın
Yalnızca raporlama modunda bir CSP dağıtarak başlayın. Bu, web sitenizin işlevselliğini bozmadan ihlalleri izlemenize olanak tanır. İhlal raporlarını belirlenmiş bir uç noktaya göndermek için report-uri veya report-to yönergesini yapılandırın.
Örnek başlık (Yalnızca Raporlama):
Content-Security-Policy-Report-Only: default-src 'self'; report-uri /csp-report
2. İhlal Raporlarını Analiz Edin
Hangi kaynakların neden engellendiğini belirlemek için ihlal raporlarını dikkatlice analiz edin. Bu, web sitenizin kaynak bağımlılıklarını anlamanıza ve potansiyel güvenlik açıklarını belirlemenize yardımcı olacaktır.
İhlal raporları genellikle JSON yükleri olarak yapılandırılmış report-uri veya report-to uç noktasına gönderilir. Bu raporlar, engellenen URI, ihlal edilen yönerge ve belge URI'si gibi ihlal hakkında bilgiler içerir.
3. CSP Politikasını İyileştirin
İhlal raporlarına dayanarak, güçlü bir güvenlik duruşunu korurken meşru kaynaklara izin vermek için CSP politikanızı iyileştirin. Engellenen kaynaklar için belirli kaynak değerleri ekleyin. 'unsafe-inline' kullanmaktan kaçınmak için satır içi betikler ve stiller için nonce'lar veya hash'ler kullanmayı düşünün.
4. Zorunlu Moda Geçiş Yapın
CSP politikanızın meşru kaynakları engellemediğinden emin olduğunuzda, zorunlu moda geçin. Bu, kalan tüm ihlalleri engelleyecek ve XSS saldırılarına karşı sağlam bir güvenlik katmanı sağlayacaktır.
Örnek başlık (Zorunlu):
Content-Security-Policy: default-src 'self'; script-src 'self' https://example.com; style-src 'self' 'unsafe-inline'; img-src 'self' data:; report-uri /csp-report
5. CSP Politikasını İzleyin ve Sürdürün
CSP bir kez ayarla ve unut çözümü değildir. Web siteniz geliştikçe ve yeni güvenlik tehditleri ortaya çıktıkça CSP politikanızı sürekli olarak izlemek ve güncellemek esastır. İhlal raporlarını düzenli olarak gözden geçirin ve politikayı gerektiği gibi ayarlayın.
Pratik CSP Örnekleri
Farklı senaryolar için bazı pratik CSP örneklerine bakalım:
Örnek 1: Basit Bir Web Sitesi için Temel CSP
Bu CSP, aynı kökenden içeriğe ve herhangi bir kaynaktan resimlere izin verir.
Content-Security-Policy: default-src 'self'; img-src *
Örnek 2: Belirli Betik ve Stil Kaynaklarına Sahip CSP
Bu CSP, aynı kökenden ve belirli bir CDN'den betiklere ve aynı kökenden ve satır içi stillere izin verir.
Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com; style-src 'self' 'unsafe-inline'
Örnek 3: Satır İçi Betikler için Nonce'lar İçeren CSP
Bu CSP, her satır içi betik için benzersiz bir nonce gerektirir.
Content-Security-Policy: default-src 'self'; script-src 'self' 'nonce-r4nd0mn0nc3'
HTML:
<script nonce="r4nd0mn0nc3">console.log('Merhaba, dünya!');</script>
Önemli: Nonce değeri her istek için sunucuda dinamik olarak oluşturulmalıdır. Bu, saldırganların nonce'u yeniden kullanmasını engeller.
Örnek 4: Tıklama Tuzağını Önlemek için Frame Atalarını Kısıtlayan CSP
Bu CSP, sayfanın `https://example.com` dışındaki herhangi bir alanda bir iframe içine gömülmesini engeller.
Content-Security-Policy: frame-ancestors 'self' https://example.com
Örnek 5: 'strict-dynamic' ve 'self'e geri dönüş kullanan daha kısıtlayıcı bir CSP
Bu CSP, modern tarayıcılar için `strict-dynamic`'ten yararlanırken, onu desteklemeyen eski tarayıcıları da destekler. Ayrıca ihlalleri izlemek için bir `report-uri` içerir.
Content-Security-Policy: default-src 'self'; script-src 'strict-dynamic' 'nonce-{random-nonce}' 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; report-uri /csp-report
Sunucu tarafında `{random-nonce}` değerini dinamik olarak oluşturulmuş bir nonce değeriyle değiştirmeyi unutmayın.
CSP ve Tek Sayfa Uygulamaları (SPA'lar)
SPA'larda CSP uygulamak, bu uygulamaların dinamik doğası nedeniyle zorlayıcı olabilir. SPA'lar genellikle DOM'u oluşturmak ve manipüle etmek için yoğun olarak JavaScript'e güvenir, bu da dikkatli bir şekilde ele alınmazsa CSP ihlallerine yol açabilir.
SPA'larda CSP uygulamak için bazı ipuçları:
'unsafe-inline've'unsafe-eval''dan kaçının: Bu yönergelerden SPA'larda mümkün olduğunca kaçınılmalıdır. Uygulamanızın güvenliğini önemli ölçüde zayıflatırlar.- Nonce'lar veya Hash'ler Kullanın: Satır içi betikler ve stiller için nonce'lar veya hash'ler kullanın. Bu, SPA'lar için önerilen yaklaşımdır.
- Güvenilir Türleri (Trusted Types) Düşünün: Güvenilir Türler, DOM tabanlı XSS güvenlik açıklarını önlemeye yardımcı olan bir tarayıcı API'sidir. Güvenliği daha da artırmak için CSP ile birlikte kullanılabilir.
- CSP uyumlu bir framework kullanın: Bazı ön yüz framework'leri (belirli yapılandırmalara sahip React, Angular ve Vue.js gibi) CSP'yi daha kolay uygulamanıza yardımcı olacak özellikler sunar.
Diğer Önemli Ön Yüz Güvenlik Başlıkları
CSP, ön yüz güvenliğinin temel taşı olsa da, diğer başlıklar kapsamlı bir savunma stratejisi sağlamada önemli bir rol oynar:
Strict-Transport-Security (HSTS)
Strict-Transport-Security (HSTS) başlığı, tarayıcıya web sitesine bağlanmak için her zaman HTTPS kullanmasını talimatını verir. Bu, bağlantıyı HTTP'ye düşürmeye çalışan ortadaki adam saldırılarını önler.
Örnek başlık:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
max-age: Tarayıcının siteye yalnızca HTTPS üzerinden erişmesi gerektiğini hatırlaması gereken süreyi (saniye cinsinden) belirtir. Üretim ortamları için 31536000 saniye (1 yıl) değeri önerilir.includeSubDomains: HSTS politikasının alan adının tüm alt alan adlarına uygulandığını belirtir.preload: Alan adının, tarayıcılara önceden yüklenmiş HSTS etkin alan adları listesine dahil edilmesine izin verir. Bu, alan adınızı Google tarafından yönetilen HSTS ön yükleme listesine göndermenizi gerektirir.
X-Frame-Options
X-Frame-Options başlığı, web sitesinin bir iframe içine gömülüp gömülemeyeceğini kontrol ederek tıklama tuzağı saldırılarını önler.
Örnek başlık:
X-Frame-Options: DENY
Olası değerler:
DENY: Köken ne olursa olsun, sayfanın bir iframe'de görüntülenmesini engeller.SAMEORIGIN: Sayfanın yalnızca iframe'in kökeni sayfanın kökeniyle eşleşiyorsa bir iframe'de görüntülenmesine izin verir.ALLOW-FROM uri: Sayfanın yalnızca iframe'in kökeni belirtilen URI ile eşleşiyorsa bir iframe'de görüntülenmesine izin verir. Not: Bu seçenek kullanımdan kaldırılmıştır ve tüm tarayıcılar tarafından desteklenmeyebilir.
Not: CSP'deki frame-ancestors yönergesi, çerçevelemeyi kontrol etmek için daha esnek ve güçlü bir yol sağlar ve genellikle X-Frame-Options yerine tercih edilir.
X-XSS-Protection
X-XSS-Protection başlığı, tarayıcının yerleşik XSS filtresini etkinleştirir. CSP, XSS saldırılarını önlemek için daha sağlam bir çözüm olsa da, bu başlık özellikle CSP'yi tam olarak desteklemeyen eski tarayıcılar için ek bir savunma katmanı sağlayabilir.
Örnek başlık:
X-XSS-Protection: 1; mode=block
1: XSS filtresini etkinleştirir.0: XSS filtresini devre dışı bırakır.mode=block: Bir XSS saldırısı tespit edilirse tarayıcıya sayfayı engellemesini talimatını verir.report=uri: Bir XSS saldırısı tespit edilirse tarayıcının bir rapor göndermesi gereken bir URL belirtir.
Referrer-Policy
Referrer-Policy başlığı, isteklerle gönderilen yönlendiren (referrer) bilgisi miktarını kontrol eder. Yönlendiren bilgisi, kullanıcıları web siteleri arasında izlemek için kullanılabilir, bu nedenle bunu kontrol etmek kullanıcı gizliliğini artırabilir.
Örnek başlık:
Referrer-Policy: strict-origin-when-cross-origin
Bazı yaygın değerler:
no-referrer: Referer başlığını asla göndermez.no-referrer-when-downgrade: TLS (HTTPS) olmayan kökenlere Referer başlığını göndermez.origin: Referer başlığında yalnızca kökeni (şema, ana bilgisayar ve bağlantı noktası) gönderir.origin-when-cross-origin: Çapraz kökenli istekler için kökeni ve aynı kökenli istekler için tam URL'yi gönderir.same-origin: Aynı kökenli istekler için Referer başlığını gönderir, ancak çapraz kökenli istekler için göndermez.strict-origin: Protokol güvenlik seviyesi aynı kaldığında (HTTPS'den HTTPS'ye) yalnızca kökeni gönderir, ancak daha az güvenli bir hedefe (HTTPS'den HTTP'ye) başlık göndermez.strict-origin-when-cross-origin: Aynı kökenli bir istek gerçekleştirirken kökeni gönderir. Çapraz kökenli istekler için, yalnızca protokol güvenlik seviyesi aynı kaldığında (HTTPS'den HTTPS'ye) kökeni gönderir, ancak daha az güvenli bir hedefe (HTTPS'den HTTP'ye) başlık göndermez.unsafe-url: Köken ne olursa olsun, Referer başlığında tam URL'yi gönderir. Hassas bilgileri ifşa edebileceği için son derece dikkatli kullanın.
Permissions-Policy (önceden Feature-Policy)
Permissions-Policy başlığı (önceden Feature-Policy olarak biliniyordu), geliştiricilerin tarayıcı özelliklerini ve API'lerini seçici olarak etkinleştirmesine ve devre dışı bırakmasına olanak tanır. Bu, uygulamanızın saldırı yüzeyini azaltmaya ve kullanıcı gizliliğini iyileştirmeye yardımcı olabilir.
Örnek başlık:
Permissions-Policy: geolocation=()
Bu örnek, web sitesi için coğrafi konum API'sini devre dışı bırakır.
Permissions-Policy ile kontrol edilebilecek diğer özellikler şunlardır:
cameramicrophonegeolocationaccelerometergyroscopemagnetometerusbmidipaymentfullscreen
Farklı Platformlarda Güvenlik Başlıklarını Ayarlama
Güvenlik başlıklarını ayarlama yöntemi, kullandığınız web sunucusuna veya platforma bağlı olarak değişir. İşte bazı yaygın örnekler:
Apache
Apache'de güvenlik başlıklarını .htaccess dosyasına veya sunucu yapılandırma dosyasına (httpd.conf) ekleyerek ayarlayabilirsiniz.
Örnek .htaccess yapılandırması:
<IfModule mod_headers.c>
Header set Content-Security-Policy "default-src 'self'; script-src 'self' https://cdn.example.com; style-src 'self' 'unsafe-inline'; img-src 'self' data:; report-uri /csp-report"
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Header set X-Frame-Options "DENY"
Header set X-XSS-Protection "1; mode=block"
Header set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>
Nginx
Nginx'te güvenlik başlıklarını Nginx yapılandırma dosyasındaki (nginx.conf) sunucu bloğuna ekleyerek ayarlayabilirsiniz.
Örnek Nginx yapılandırması:
server {
listen 443 ssl;
server_name example.com;
add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://cdn.example.com; style-src 'self' 'unsafe-inline'; img-src 'self' data:; report-uri /csp-report";
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
add_header X-Frame-Options "DENY";
add_header X-XSS-Protection "1; mode=block";
add_header Referrer-Policy "strict-origin-when-cross-origin";
...
}
Node.js (Express)
Node.js'te güvenlik başlıklarını Helmet gibi ara yazılımlar (middleware) kullanarak ayarlayabilirsiniz.
Helmet kullanarak örnek:
const express = require('express');
const helmet = require('helmet');
const app = express();
app.use(helmet());
// Gerekirse CSP'yi özelleştirin
app.use(helmet.contentSecurityPolicy({
directives: {
defaultSrc: ["'self'"],
scriptSrc: ["'self'", "https://cdn.example.com"],
styleSrc: ["'self'", "'unsafe-inline'"],
imgSrc: ["'self'", "data:"],
reportUri: '/csp-report'
},
}));
app.get('/', (req, res) => {
res.send('Merhaba Dünya!');
});
app.listen(3000, () => {
console.log('Sunucu 3000 portunda dinleniyor');
});
Cloudflare
Cloudflare, Sayfa Kuralları (Page Rules) veya Dönüşüm Kuralları (Transform Rules) kullanarak güvenlik başlıklarını ayarlamanıza olanak tanır.
Güvenlik Başlıklarınızı Test Etme
Güvenlik başlıklarını uyguladıktan sonra, doğru çalıştıklarından emin olmak için onları test etmek çok önemlidir. Web sitenizin güvenlik başlıklarını analiz etmenize yardımcı olabilecek birkaç çevrimiçi araç vardır:
- SecurityHeaders.com: Güvenlik başlıklarını analiz etmek için basit ve etkili bir araç.
- Mozilla Observatory: Güvenlik başlıkları da dahil olmak üzere web sitesi güvenliğini test etmek için kapsamlı bir araç.
- WebPageTest.org: Şelale grafiğinde (waterfall chart) HTTP başlıklarını görüntülemenizi sağlar.
Sonuç
Ön yüz güvenlik başlıkları, özellikle İçerik Güvenliği Politikası (CSP), web uygulamalarını çeşitli saldırılardan korumak ve kullanıcı güvenliğini artırmak için esastır. Bu başlıkları dikkatli bir şekilde uygulayarak ve sürdürerek XSS, tıklama tuzağı ve diğer güvenlik açıklarının riskini önemli ölçüde azaltabilirsiniz. Yalnızca raporlama politikasıyla başlamayı, ihlal raporlarını analiz etmeyi, politikayı iyileştirmeyi ve ardından zorunlu moda geçmeyi unutmayın. Web siteniz geliştikçe ve yeni tehditler ortaya çıktıkça güvende kalması için güvenlik başlıklarınızı düzenli olarak izleyin ve güncelleyin.
Ön yüz güvenliğine proaktif bir yaklaşım benimseyerek, kullanıcılarınızı ve işinizi koruyan daha güvenli ve güvenilir web uygulamaları oluşturabilirsiniz.