Làm cách nào để lấy mật khẩu băm từ cơ sở dữ liệu trong php?

Khi bạn lưu mật khẩu của người dùng vào cơ sở dữ liệu, bạn KHÔNG BAO GIỜ lưu trữ chúng ở dạng văn bản thuần túy do lo ngại về bảo mật và quyền riêng tư. Cơ sở dữ liệu nơi lưu trữ mật khẩu của người dùng có thể bị xâm phạm vào một thời điểm nào đó trong tương lai và ít nhất bằng cách băm chúng, kẻ tấn công sẽ khó xác định mật khẩu ban đầu của người dùng bị ảnh hưởng hơn

Hàm
1 tính toán hàm băm md5 của một chuỗi. Băm mật khẩu bằng md5 [hoặc sha1, hoặc thậm chí sha256] không còn an toàn nữa, bởi vì những giá trị băm này có thể được đảo ngược rất nhanh bằng cách cưỡng bức vũ phu, bảng cầu vồng hoặc tìm chúng trong cơ sở dữ liệu chuỗi/băm trực tuyến

Hàm
2 hiện cung cấp ba tùy chọn thuật toán khác nhau. 
3, 
4 và [kể từ PHP >= 7. 2. 0] 
5. Hiện tại, cả hai tùy chọn 
3 và 
4 sẽ dẫn đến việc sử dụng thuật toán băm BCRYPT, khiến chúng về cơ bản giống nhau. 
5 sẽ dẫn đến việc sử dụng thuật toán băm Argon2. Khi mật mã học và ngôn ngữ PHP nói chung phát triển, có khả năng sẽ có các loại thuật toán mới khác được hỗ trợ. 
3 có thể sẽ được thay đổi trong tương lai do các đề xuất về thuật toán băm tốt nhất để sử dụng ngày càng phát triển và khi có các thuật toán băm mới, do đó, nói chung, 
3 là tùy chọn tốt nhất để chọn khi băm mật khẩu

Loại trường được sử dụng để lưu trữ mật khẩu trong cơ sở dữ liệu phải là

1 để thay đổi thuật toán trong tương lai

Sử dụng muối của riêng bạn không được khuyến khích. Nói chung, bạn nên sử dụng tính năng chống đạn mà không đặt muối của riêng mình, cho phép hàm

2 tự xử lý việc này [muối được tạo ngẫu nhiên theo mặc định khi sử dụng 
2]

Một tùy chọn quan trọng khác cần đề cập là

4, điều khiển tốc độ băm. Trên các máy chủ có tài nguyên tốt hơn, có thể tăng 
4. Có một tập lệnh để tính toán chi phí cho môi trường của bạn trong. Thực hành bảo mật tốt là thử tăng giá trị này lên giá trị cao hơn giá trị mặc định [
6]

Chuỗi băm được trả về bởi

2 bao gồm các phần sau

9

Vì vậy, bạn có thể trích xuất các thành phần băm mật khẩu thô như thế này

0

Hoặc đơn giản là sử dụng

8 để có thêm thông tin dễ đọc

2

đầu ra nào

3

Mật khẩu_verify[]

Xác minh mật khẩu có thể được thực hiện với password_verify[]

Mật khẩu_cần_rehash[]

Một chức năng quan trọng khác là password_needs_rehash[], kiểm tra xem hàm băm đã cho có khớp với các tùy chọn đã cho hay không. Điều này rất hữu ích trong trường hợp nâng cấp phần cứng máy chủ và khi có thể tăng tùy chọn

4

70 hoạt động giống hệt như API băm mật khẩu PHP gốc, vì vậy khi bạn nâng cấp lên phiên bản PHP mới nhất, bạn sẽ không cần phải cấu trúc lại mã của mình

Đối với các phiên bản PHP dưới 5. 3. 6, phpass có thể là một giải pháp tốt, nhưng hãy cố gắng tránh những điều này và thay vào đó hãy sử dụng API băm mật khẩu gốc

Băm mật khẩu trong các dự án mã nguồn mở

Một số dự án nguồn mở PHP được sử dụng rộng rãi nhất sử dụng các thuật toán băm khác nhau cho mật khẩu vì chúng hỗ trợ các phiên bản PHP cũ hơn mà

2 chưa có sẵn hoặc chúng đã sử dụng các đề xuất bảo mật mới nhất của các chuyên gia bảo mật PHP

Di chuyển mã kế thừa sang các thuật toán băm hiện tại

  • Ví dụ: bạn có bảng với người dùng và cột mật khẩu được băm [và sử dụng một số thuật toán băm cũ kỹ và không an toàn, như md5]
  • Thêm một cột mới vào bảng cơ sở dữ liệu của bạn với người dùng -
    72
  • Băm mật khẩu kế thừa bằng phương pháp băm hiện tại và mới

0

  • Cấu trúc lại mã của bạn để nó cân nhắc đến
    72 khi xác thực người dùng
tên người dùngemailpassword_hashlegacy_password_hashdoedoe@example. com

Bước quan trọng ở đây là có các hàm băm mới khi chúng có sẵn và tất cả các hàm băm trước đó, được băm bằng thuật toán băm mới và an toàn hơn

Làm cách nào để lấy mật khẩu băm trong PHP?

password_hash .
PASSWORD_DEFAULT - Sử dụng thuật toán bcrypt [mặc định kể từ PHP 5. 5. 0]. .
PASSWORD_BCRYPT - Sử dụng thuật toán CRYPT_BLOWFISH để tạo hàm băm. .
PASSWORD_ARGON2I - Sử dụng thuật toán băm Argon2i để tạo hàm băm. .
PASSWORD_ARGON2ID - Sử dụng thuật toán băm Argon2id để tạo hàm băm

Làm cách nào để lấy mật khẩu từ cơ sở dữ liệu trong PHP?

Đây là mã của tôi

Chủ Đề