Bao mat nhap mon

(ndkhanh157) #1

Cách này đảm bảo chỉ người dùng biết mật khẩu của họ, dù là lập trình viên hay database
admin, có nắm được cả code lẫn database cũng không tài nào mò ra mật khẩu. Tuy nhiên,
cách này có một vấn đề: Hai mật khẩu giống nhau khi hash sẽ có kết quả giống nhau. Hacker
có thể mò ra mật khẩu bằng cách dùng dictionary attack – hash toàn bộ các mật khẩu có thể
trong từ điển, rồi so sánh kết quả với mật khẩu đã hash dưới database.


Thế nhưng, vỏ quýt dày có móng tay nhọn. Đây là cách lưu trữ mật khẩu đúng mà hiện nay
các framework đều áp dụng:



  1. Khi tạo mật khẩu, tạo random một chuỗi kí tự gọi là salt.

  2. Salt sẽ được cộng vào sau mật khẩu, toàn bộ chuỗi mật khẩu và salt sẽ bị băm (hash).

  3. Lưu salt và giá trị đã băm xuống database (Một người dùng sẽ có 1 salt riêng).

  4. Khi người dùng đăng nhập, lấy salt của người dùng, cộng nó với mật khẩu họ nhập
    vào, hash ra rồi so với giá trị trong database.


Với cách này, khi người dùng quên mật khẩu, hệ thống không tài nào mò ra mật khẩu để gửi
cho họ. Cách giải quyết duy nhất là reset mật khẩu, random ra một mật khẩu mới rồi gửi cho
người dùng.


Ối giời phức tạp thế, cùng lắm thì lộ password trên trang của mình thôi mà


Nói nhỏ một bí mật (mà chắc ai cũng biết) cho các bạn nghe nè: Hầu như người dùng chỉ sử
dụng 1 username/mật khẩu duy nhất cho toàn bộ các tài khoản trên mạng. Nếu hacker tìm
được mật khẩu từ trang của bạn, chúng sẽ thử với các account facebook, gmail, tài khoản
ngân hàng, ... của người đó.

Free download pdf