⊗ppPmAuRHS 424 of 447 menu

Kayıt İşlemine Tuz Ekleme

Yani, biliyorsunuz ki md5 ile hashleme - geri döndürülemez bir işlemdir ve hash'e erişim sağlayan bir hacker, bu hash'ten şifreyi elde edemez.

Aslında bu ifade tam olarak doğru değil - günümüzde kötü niyetli hacker'lar popüler ve pek de popüler olmayan şifrelerin hash kütüphanelerini oluşturdular ve herhangi bir acemi, hash'ini arama motorunda aratarak şifreyi çözebilir.

Bu, yeterince basit, popüler şifreler için geçerlidir.

Örneğin, 827ccb0eea8a706c4c34a16891f84e7b hash'ini arama motorunda aratın ve hemen arama sonuçlarında bunun '12345' şifresi olduğunu göreceksiniz.

Yeterince karmaşık şifrelerin hash'leri bu şekilde çözülemez (deneyin).

Sorunun ne olduğunu sorabilirsiniz - o zaman hepimiz karmaşık şifrelerle kayıt olalım. Ancak bir sorun var - kullanıcıların çoğu verilerinin güvenliği hakkında düşünmez ve yeterince basit şifreler girebilirler.

Kayıt sırasında kullanıcıları daha uzun şifreler bulmaya zorlayabiliriz, örneğin minimum karakter sayısını 6 veya 8 ile sınırlayarak, ancak yine de '123456' veya '12345678' gibi şifreler ortaya çıkacaktır.

Elbette, şifrenin karmaşıklığını kontrol eden daha akıllı bir algoritma bulunabilir, ancak başka bir çözüm var.

Bu çözümün özü şudur: şifreler tuzlanmalıdır. Tuz (salt), kayıt sırasında şifreye eklenecek özel, rastgele bir dizedir ve hash artık basit bir şifreden değil, tuz+şifre dizesinden, yani tuzlanmış şifreden hesaplanacaktır.

Yani kayıt sırasında şöyle bir şey yapacaksınız:

<?php $salt = '1sJg3hfdf'; // tuz - karmaşık rastgele bir dize $password = md5($salt . $_POST['password']); // şifreyi tuzlanmış hash'e dönüştür ?>

Bu durumda tuz her kullanıcı için farklı olacaktır, kayıt anında rastgele oluşturulması gerekir.

İşte bunu yapacak hazır bir fonksiyon:

<?php function generateSalt() { $salt = ''; $saltLength = 8; // tuzun uzunluğu for($i = 0; $i < $saltLength; $i++) { $salt .= chr(mt_rand(33, 126)); // ASCII tablosundan bir karakter } return $salt; } ?>

Bu fonksiyonu kullanarak kodumuzu şu şekilde yeniden yazabiliriz:

<?php $salt = generateSalt(); // tuz $password = md5($salt . $_POST['password']); // tuzlanmış şifre ?>

Bunların kayıt sırasındaki değişiklikler olduğunu bir kez daha tekrar edeyim - veritabanında sadece şifrenin hash'ini değil, tuzlanmış şifrenin hash'ini saklıyoruz.

Bu henüz bitmedi: kullanıcılar tablosunda login ve password alanlarına ek olarak her kullanıcının tuzunu saklayacağımız bir salt alanı daha olmalı.

Yukarıda açıklanan tuzlanmış şifreli kaydı uygulayın.

Türkçe
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenЎзбекOʻzbekTiếng Việt
Web sitesinin çalışması, analiz ve kişiselleştirme için çerezleri kullanıyoruz. Veri işleme, Gizlilik Politikası'na uygun olarak gerçekleşir.
tümünü kabul et özelleştir reddet