Monday, June 23, 2014
BẢO MẬT HƠN CHO PASSWORD – WEB PROGRAMER
Hiện nay, nhiều bạn học lập trình rất giỏi, cực kì xuất sắc nữa là khác, nhưng các bạn đó có bao giờ chú ý để việc đặt 1 password sao cho BẢO MẬT.
- Thú thật, khi mình khai thác sqli, nhiều site đặt password chẳng mã hóa lun, chắc điều này các bạn cũng biết nhỉ????
- Một số khác, lại mã hóa cái password ấy, nhưng cực kì sơ sài, bởi vì, họ chỉ quan tâm tới vẻ bên ngoài sao cho bắt mắt, đẹp và … chạy được, nhưng đó lại là sự thật
vd 1 cách đặt pass phổ biến như:
$password = md5($_POST["pass"]);
Theo bạn nghĩ, cách đặt như vậy có an toàn ko????
Nếu bạn nào nghĩ, nó là an toàn thì thật sai lầm, thật đấy!
chẳng hạn như:
_http://hashkiller.com/index.php?action=md5webcrack
_http://www.cmd5.com/english.aspx
_http://www.md5crack.com
_http://md5-db.com
có thế sẽ làm các webmaster buồn tình với cách mã hóa pass như vậy….
—————–
Đây là 1 vài kinh nghiệm, mà có lẽ các bạn lập trình web, hay lập trình ứng dụng đi chăng nữa nên tham khảo (minh họa bằng php)
VD1:
function encrypt_pass($pass, $salt = '!@#$%^&*()') { return md5($pass.$salt) }
VD2: mở rộng hơn xíu xíu:
function encrypt_pass($pass, $salt = '!@#$%^&*()') { return md5(md5(md5($pass.$salt))); }
VD3:
function encrypt_pass($pass, $salt = '!@#$%^&*()') { return crypt($pass, $salt); }
VD4:
function encrypt_pass($pass, $salt = '!@#$%^&*()') { return " PASSWORD({$pass}{$salt}) "; // password là 1 hàm trong CSDL mysql }
…vân vân và vân vân……..
Sử dụng thì đơn giản phải ko????
bây giờ sử dụng:
$password = encrypt_pass($_POST["pass"]);
lúc này, ví password bạn đặt là 123456 thì khi lưu vào CSDL nó sẽ là
md5('123456!@#$%^&*()')-------------------- Crack chắc 10 năm quá! --------------------
hoặc
$password = encrypt_pass($_POST['pass'], “thang-na0-ng0n-thi-h4ck”);
VD: password bạn đặt là 123456 thì password lưu vào CSDL sẽ là:
md5(’123456thang-na0-ng0n-thi-h4ck’) <— crack chắc 20 năm quoá!
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment