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á!

No comments:

Post a Comment