XSS Saldırıları Nedir?
ASP.NET Core'da XSS Saldırılarına Karşı Önlemler
CSP, web sayfanızdaki kaynakları kontrol etmenizi sağlayarak, dışarıdan gelebilecek kötü niyetli içeriklerin çalışmasını engeller. ASP.NET Core'da CSP’yi etkinleştirerek, web uygulamanızdaki güvenliği artırabilirsiniz.
Örnek olarak, ASP.NET Core'da CSP'yi nasıl etkinleştireceğiniz aşağıda açıklanmıştır:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsProduction())
{
app.UseCsp(options =>
options.DefaultSources(s => s.Self())
.ScriptSources(s => s.Self().CustomSources("https://trustedsource.com")));
}
}
Bu kod parçası, yalnızca belirlediğiniz güvenli kaynaklardan gelen script'lerin çalışmasına izin verir, böylece kötü niyetli script'lerin engellenmesini sağlar.
Çoğu XSS saldırısı, çerezler üzerinde işlem yaparak gerçekleşir. HTTP-only cookie özelliği, çerezlerin sadece sunucu tarafından erişilmesini sağlar ve bu sayede kötü niyetli JavaScript kodlarının çerezlere ulaşmasını engeller.
ASP.NET Core'da HTTP-only cookie'yi şu şekilde kullanabilirsiniz:
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
}).AddCookie(options =>
{
options.Cookie.HttpOnly = true; // Bu satır HTTP-only özelliğini etkinleştirir
});
Güvenli bir uygulama geliştirmek için, her zaman gelen verileri doğrulamak (input validation) ve çıktıyı doğru şekilde kodlamak (output encoding çok önemlidir). Bu teknikler, kötü niyetli kodların uygulamanıza enjekte edilmesini engeller.
ASP.NET Core'da input validation ve output encoding uygulamaları şöyle yapılır:
- Input Validation:
Herhangi bir kullanıcının gönderdiği verinin doğru formatta olduğunu ve istenmeyen karakterlerden arındırıldığını kontrol edin.
// Kullanıcıdan alınan verileri doğrulamak için
if (string.IsNullOrEmpty(userInput) || !Regex.IsMatch(userInput, @"^[a-zA-Z0-9]+$"))
{
// Hatalı giriş
}
- Output Encoding:
HTML veya JavaScript çıktılarında, kullanıcıdan gelen verileri uygun şekilde encode edin.
@Html.Encode(userInput) // Bu satır, kullanıcıdan alınan veriyi güvenli bir şekilde encode eder.
Gerçek dünya örnekleriyle, ASP.NET Core’da XSS’yi nasıl engelleyeceğimizi gösterelim. Basit bir form üzerinden örnek verelim:
@{
var userInput = Request.Query["userInput"];
}
User Input: @Html.Encode(userInput)
Bu örnekte, kullanıcının girdiği değerler HTML'de güvenli bir şekilde görüntülenir. Yani, kötü niyetli bir XSS saldırısı burada başarılı olamaz.
Sonuç Olarak
Unutmayın, web güvenliği bir süreçtir ve sürekli güncellenmesi gerekir. Yeni tehditler ve zafiyetlerle mücadele etmek için daima dikkatli olun. ASP.NET Core, bu yolculukta en güvenli ve güçlü araçlardan biridir.