lostyazilim
tr.link

ASP.NET Site Sahiplerine || Güvenlik İpuçları

2 Mesajlar 1.367 Okunma
acebozum
tr.link

ssyazilim ssyazilim I'm retired from the NET! Kullanıcı
  • Üyelik 28.06.2014
  • Yaş/Cinsiyet 34 / E
  • Meslek Industry Engineering
  • Konum Isparta
  • Ad Soyad S** S**
  • Mesajlar 734
  • Beğeniler 106 / 213
  • Ticaret 8, (%100)
Bu yazıda size çeşitli saldırı vektörlerine göre madde madde nasıl korunabileceğinizi paylaşmak istiyorum. Webconfig + .cs tabanlı korunma ipuçlarıdır.




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
balporsugu

kişi bu mesajı beğendi.

elektronikssl
webimgo

fzthakan fzthakan WM Aracı Kullanıcı
  • Üyelik 05.04.2014
  • Yaş/Cinsiyet 43 / E
  • Meslek fizyoterapist
  • Konum İstanbul Avrupa
  • Ad Soyad H** Y**
  • Mesajlar 8
  • Beğeniler 0 / 2
  • Ticaret 1, (%100)
Merhaba benim asp.net 3.5 vers. Yazilmis bir sitem var fakat database dosyasi ve tablosu yok sadece kaynak kodlar var elimde bu konuda bana yardimci olabilir misiniz?
Iyi calismalar
 

 

wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al