İçeriğe geç

Kitaplar / Yöntem Birimler ve Araçlar Kılavuzu / 3. Güvenlik: saldırılara karşı savunma

3. Güvenlik: saldırılara karşı savunma

Güvenlik birimi yaygın saldırılara karşı denenmiş yapı taşları sunar. Kendi şifreleme yönteminizi yazmak yerine bunları doğru yerde kullanmanız yeterlidir.

Yöntem
program ÜyelikÖzeti
{ Güvenlik birimi: parola saklama, kullanıcı girdisini temizleme ve süreli oturum belirteci.
  Çıktının her çalıştırmada aynı olması için birimin saati sabitlendi. }
kullan Güvenlik

sabit ANAHTAR: metin = 'bunu-ortam-degiskeninden-oku'

değişken kayıtlı, oturum: metin

başla
  BenzetimZamanı(1800000000)
  { 1) Parola düz metin saklanmaz; tuzlu ve yavaşlatılmış özeti saklanır. }
  kayıtlı := ParolaÖzeti('Deniz-Feneri-1907', 1000)   { gerçek sistemde ikinci argümanı vermeyin }
  yaz('Kayıt biçimi : ' + Ayır(kayıtlı, '$')[0] + ', ' + Uzunluk(kayıtlı) + ' karakter', 1)
  yaz('Doğru parola : ' + Metin(ParolaDoğrula('Deniz-Feneri-1907', kayıtlı)), 1)
  yaz('Yanlış parola: ' + Metin(ParolaDoğrula('deniz-feneri', kayıtlı)), 1)
  yaz('Zayıf parola : ' + Metin(ParolaSorunları('kedi123')), 1)

  { 2) Kullanıcının yazdığı metin sayfaya ve sorguya kaçışlanarak girer. }
  yaz('HTML : ' + HtmlKaçış('<script>çal()</script>'), 1)
  yaz('SQL  : ' + SqlMetni('x'' OR ''1''=''1'), 1)
  yaz('Dosya: ' + DosyaAdıTemizle('../../etc/passwd') + ', yol güvenli mi: ' + Metin(YolGüvenli('../../etc/passwd')), 1)

  { 3) Oturum: imzalı ve 30 dakika geçerli belirteç. }
  oturum := BelirteçÜret(ANAHTAR, 'edaece', 1800)
  yaz('Oturum sahibi: ' + Metin(BelirteçDoğrula(ANAHTAR, oturum)), 1)
  yaz('Sahte anahtar: ' + Metin(BelirteçDoğrula('tahmin', oturum)), 1)
  BenzetimZamanı(1800000000 + 1801)
  yaz('31 dk sonra  : ' + Metin(BelirteçDoğrula(ANAHTAR, oturum)), 1)
bitir.
Çıktı
Kayıt biçimi : pbkdf2-sha256, 116 karakter
Doğru parola : doğru
Yanlış parola: yanlış
Zayıf parola : ['en az 8 karakter olmalı', 'büyük harf yok', 'simge yok']
HTML : &lt;script&gt;çal()&lt;/script&gt;
SQL  : 'x'' OR ''1''=''1'
Dosya: passwd, yol güvenli mi: yanlış
Oturum sahibi: edaece
Sahte anahtar: boş
31 dk sonra  : boş
Saldırı Araç
Parola veritabanının çalınması ParolaÖzeti, ParolaDoğrula, YenidenÖzetlenmeli, ParolaGücü, ParolaSorunları
Verinin değiştirilmesi Özet, İmza, İmzaDoğru, BelirteçÜret, BelirteçDoğrula
Yanıt süresinden bilgi sızması GüvenliEşit
Verinin okunması AnahtarÜret, ParoladanAnahtar, Şifrele, ŞifreÇöz
Tahmin edilebilir değerler Belirteç, Tuz, Kimlik, GüvenliRastgele
XSS, SQL enjeksiyonu, yol geçişi HtmlKaçış, SqlMetni, YolGüvenli, DosyaAdıTemizle, UrlGüvenli, EpostaGeçerli, İzinliKarakterler
Kaba kuvvet Sınırlayıcı(enÇok, saniye)
İz bırakmadan saldırı Günlük, GünlükKayıtları, Maskele

Üç temel alışkanlık çoğu açığı kapatır: parolaları ParolaÖzeti ile saklamak, kullanıcıdan gelen her metni gittiği yere göre kaçışlamak (HtmlKaçış, SqlMetni) ve gizli değerleri = ile değil GüvenliEşit ile karşılaştırmak.

Birim açık anahtarlı şifreleme ve TLS içermez; ağ trafiğini HTTPS korur. Algoritmalar standart test vektörleriyle doğrulanmıştır ama bağımsız bir güvenlik denetiminden geçmemiştir. Her aracın ayrıntılı anlatımı, tam bir güvenli giriş örneği ve iyi uygulamalar Yöntem Güvenlik Birimi — Kullanım Kılavuzu’ndadır; örnekler guvenlik_ornekleri/ klasöründedir.