Parola Güvenliği:
Veritabanınızda tuttuğunuz kullanıcı parolası bilgilerini şifrelemeden tutmayın. Hatta günümüzde md5 ya da SHA1 ile şifreleyerekde tutmayın. En az SHA256 kullanın.
SHA256Managed crypt = new SHA256Managed();
string hash = String.Empty;
byte[] crypto = crypt.ComputeHash(Encoding.UTF8.GetBytes(TextBox1.Text), 0, Encoding.UTF8.GetByteCount(TextBox1.Text));
foreach (byte bit in crypto)
{
hash += bit.ToString("x2");
}
File Validation:
File upload ile aldığınız dosyanın uzantısını kontrol edin. İstemediğiniz uzantıları engellemek(blacklist) yerine sadece istediğiniz(whitelist) uzanıları kabul edin.
string Uzanti = System.IO.Path.GetExtension(FileUpload1.PostedFile.FileName);
HTTP Başlık Bilgileri:
HTTP başlık bilgilerinden sunucunuz hakkında bilgi veren başlık bilgilerini temizleyin ve CSP başlık bilgilerini (Conten Security Policy) ekleyin.
Sadece ihtiyacınız olan HTTP methodlarına izin verin ve diğerlerini engelleyin.
Hataları gizleyin:
Kullanıcıların hata sayfalarını görmeye ihtiyacı yok. Bu yüzden detaylı hata sayfalarını kapatın ve ziyaretçiyi anasayfaya veya kendi oluşturduğunuz hata sayfasına yönlendirin.
HTTPOnlyCookie:
Cookielerinize “HttponlyCookies” özelliğini ekleyin. Böylelikle bu cookieler sizin siteniz dışındaki sayfalarda kullanılamaz.
ViewState Encryption:
Bildiğiniz gibi ASP.NET uygulamaları viewstate kullanır ve varsayılan olarak Base64 ile encode eder. Gerek duymadığınız sayfalarda Viewstate özelliğini kapatın.
Sayfa bazlı kapatmak için
<%@ Page Language="C#" ... EnableViewState = "False" %>
Açık olması gereken sayfalarda ise encryptionmode’u Always yapın.
SQL Injection:
string id=Request.QueryString["Haber"];
SqlCommand sorgu = new SqlCommand(“SELECT * FROM HaberTablosu WHERE HaberID=@id”);
sorgu. Parameters.AddWithValue(“@id”,id);
XSS:
Ziyaretçilerimizin zararlı karakterler girmesini engellemek için web.config dosyasına aşağıdaki satırları ekleyebiliriz. Böylelikle risk teşkil eden karakterleri (< vb.) giremeyeceklerdir.
Fakat her durumda bunu kullanamayız. Ziyaretçilerimizden kod örnekleri alıyorsak hiç kullanamayız. Bu tür durumlarda HTML encode kullanmalıyız.
<%#HttpUtility.HtmlEncode(Eval(“Yorum”))%>
Böylelikle < vb. karakterler sayfamızda yine gözükecek fakat bu sefer risk teşkil etmeyeceklerdir.
Daha detaylı XSS korunma yöntemi için http://staj.intelrad.com/2014/10/xssden-korunma-yontemleri.html
Publish:
Yaptığınız web sitelerini sunucuya atmadan önce kesinlikle publish ettikten sonra atın. Böylelikle yazdığınız uygulama hem daha hızlı çalışacaktır hemde “.cs” sayfaları olmadığından hacker sunucunuza sızsa bile “.cs” tarafındaki kodları göremeyecektir.
Kaynak : http://staj.intelrad.com/2014/12/temel-aspnet-web-form-guvenlik-onerileri.html
Gönderen : http://begeniyor.com