Bạn nên sử dụng tùy chọn xử lý nào cho mật khẩu PHP?

Mặt tiền

$hashed = Hash::make['password', [

2 của Laravel cung cấp hàm băm Bcrypt và Argon2 an toàn để lưu trữ mật khẩu người dùng. Nếu bạn đang sử dụng một trong các bộ khởi động ứng dụng Laravel, Bcrypt sẽ được sử dụng để đăng ký và xác thực theo mặc định

Bcrypt là một lựa chọn tuyệt vời để băm mật khẩu vì "hệ số công việc" của nó có thể điều chỉnh được, điều đó có nghĩa là thời gian cần thiết để tạo hàm băm có thể tăng lên khi sức mạnh phần cứng tăng lên. Khi băm mật khẩu, chậm là tốt. Thuật toán băm mật khẩu càng mất nhiều thời gian thì người dùng độc hại càng mất nhiều thời gian để tạo "bảng cầu vồng" của tất cả các giá trị băm chuỗi có thể có thể được sử dụng trong các cuộc tấn công vũ phu chống lại các ứng dụng

Cấu hình

Trình điều khiển băm mặc định cho ứng dụng của bạn được định cấu hình trong tệp cấu hình

$hashed = Hash::make['password', [

3 của ứng dụng. Hiện tại có một số trình điều khiển được hỗ trợ. Bcrypt và Argon2 [các biến thể Argon2i và Argon2id]

Sử dụng cơ bản

Băm mật khẩu

Bạn có thể băm mật khẩu bằng cách gọi phương thức

$hashed = Hash::make['password', [

4 trên mặt tiền

$hashed = Hash::make['password', [

2

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

use Illuminate\Support\Facades\Hash;

class PasswordController extends Controller

* Update the password for the user.

* @param \Illuminate\Http\Request $request

* @return \Illuminate\Http\Response

public function update[Request $request]

// Validate the new password length...

'password' => Hash::make[$request->newPassword]

Điều chỉnh hệ số công việc Bcrypt

Nếu bạn đang sử dụng thuật toán Bcrypt, phương pháp

$hashed = Hash::make['password', [

4 cho phép bạn quản lý hệ số công việc của thuật toán bằng tùy chọn

$hashed = Hash::make['password', [

0;

$hashed = Hash::make['password', [

Điều chỉnh hệ số làm việc Argon2

Nếu bạn đang sử dụng thuật toán Argon2, phương pháp

$hashed = Hash::make['password', [

4 cho phép bạn quản lý hệ số công việc của thuật toán bằng cách sử dụng các tùy chọn

$hashed = Hash::make['password', [

2,

$hashed = Hash::make['password', [

3 và

$hashed = Hash::make['password', [

4;

$hashed = Hash::make['password', [

Lưu ý
Để biết thêm thông tin về các tùy chọn này, vui lòng tham khảo tài liệu PHP chính thức về hàm băm Argon.

Xác minh rằng mật khẩu khớp với hàm băm

Phương thức

$hashed = Hash::make['password', [

5 được cung cấp bởi mặt tiền

$hashed = Hash::make['password', [

2 cho phép bạn xác minh rằng một chuỗi văn bản thuần đã cho tương ứng với một hàm băm đã cho

________số 8

Xác định xem mật khẩu có cần được băm lại không

Phương pháp

$hashed = Hash::make['password', [

7 được cung cấp bởi mặt tiền

$hashed = Hash::make['password', [

2 cho phép bạn xác định xem hệ số công việc được sử dụng bởi trình băm có thay đổi kể từ khi mật khẩu được băm hay không. Một số ứng dụng chọn thực hiện kiểm tra này trong quá trình xác thực của ứng dụng

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

$hashed = Hash::make['password', [

0

Hàm

$hashed = Hash::make['password', [

01 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

$hashed = Hash::make['password', [

0

Hàm

$hashed = Hash::make['password', [

02 hiện cung cấp ba tùy chọn thuật toán khác nhau.

$hashed = Hash::make['password', [

03,

$hashed = Hash::make['password', [

04 và [kể từ PHP >= 7. 2. 0]

$hashed = Hash::make['password', [

05. Hiện tại, cả hai tùy chọn

$hashed = Hash::make['password', [

03 và

$hashed = Hash::make['password', [

04 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.

$hashed = Hash::make['password', [

05 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ợ.

$hashed = Hash::make['password', [

03 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,

$hashed = Hash::make['password', [

03 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à

$hashed = Hash::make['password', [

01 để 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

$hashed = Hash::make['password', [

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

$hashed = Hash::make['password', [

02]

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

$hashed = Hash::make['password', [

04, đ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

$hashed = Hash::make['password', [

04. Có một tập lệnh để tính toán chi phí cho môi trường của bạn trong hướng dẫn sử dụng PHP. 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 [

$hashed = Hash::make['password', [

06]

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

$hashed = Hash::make['password', [

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

$hashed = Hash::make['password', [

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

$hashed = Hash::make['password', [

0

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

$hashed = Hash::make['password', [

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

$hashed = Hash::make['password', [

2

đầu ra nào

$hashed = Hash::make['password', [

3

Mật khẩu_verify[]

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

$hashed = Hash::make['password', [

0

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

$hashed = Hash::make['password', [

04

$hashed = Hash::make['password', [

0

$hashed = Hash::make['password', [

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 mã 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à

$hashed = Hash::make['password', [

02 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 -

    $hashed = Hash::make['password', [

    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

$hashed = Hash::make['password', [

00

  • Cấu trúc lại mã của bạn để nó cân nhắc đến

    $hashed = Hash::make['password', [

    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

Phương pháp được sử dụng nhiều nhất để băm mật khẩu trong PHP là gì?

Trong PHP, có nhiều thuật toán mã hóa thường được sử dụng như md5, crypt, sha1 và bcrypt. Và cách được sử dụng phổ biến nhất hiện nay là phương pháp băm bcrypt .

Làm cách nào để sử dụng hàm Password_hash trong PHP?

Hàm password_hash[] có thể tạo hàm băm mật khẩu mới bằng thuật toán băm một chiều mạnh . Hàm password_hash[] tương thích với hàm crypt[], do đó, hàm băm mật khẩu được tạo bởi hàm crypt[] có thể được sử dụng với hàm password_hash[].

Password_hash PHP có an toàn không?

Kết quả băm từ password_hash[] an toàn vì. Nó sử dụng thuật toán băm mạnh. Nó thêm một loại muối ngẫu nhiên để ngăn chặn các cuộc tấn công từ điển và bảng cầu vồng.

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ủ Đề