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.
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.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 : <script>çal()</script>
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.