Tôi đang tạo nhà cung cấp dịch vụ đăng ký người dùng và trong đó tôi đang sử dụng hàm password_hash để băm mật khẩu của người dùng được cung cấp. Dưới đây là phần mã được sử dụng để tạo ra các chuỗi băm:Vấn đề PHP: chức năng password_hash không thể tạo ra muối
public function generateHash($string)
{
return password_hash($string, PASSWORD_BCRYPT);
}
Như tôi hiểu từ hướng dẫn PHP, chúng ta không nên tạo ra muối của chúng tôi và thay vào đó hãy để chức năng password_hash chăm sóc đó để cải thiện an ninh. Tuy nhiên, khi tôi cố gắng tạo một người dùng mới tôi nhận được cảnh báo dưới đây:
Cảnh báo: password_hash(): Không thể tạo ra muối
Ứng dụng này tạo ra cho người sử dụng nhưng do vấn đề trên không băm sẽ được tạo ra và mật khẩu sẽ luôn luôn được để trống trong cơ sở dữ liệu
tôi đang sử dụng PHP phiên bản 7.0.4/Zend server trong môi trường phát triển của tôi
Nó sẽ được đánh giá cao nếu ai đó có thể chỉ cho tôi đi bên phải hướng
Bạn đang sử dụng hệ điều hành nào? – jszobody
Mật khẩu trống sẽ vẫn trả lại băm. –
Từ tìm kiếm, nơi duy nhất trong nguồn PHP mà thông báo lỗi này được tạo ra là [không tạo ra các byte ngẫu nhiên] (https://github.com/php/php-src/blob/c72282a13b12b7e572469eba7a7ce593d900a8a2/ext/standard/password. C# L125-L126). Nhìn vào [random_bytes] (http://php.net/random_bytes) bạn có thể thấy nhiều cách khác nhau mà PHP sẽ cố gắng tạo ra sự ngẫu nhiên. Tôi sẽ bắt đầu khắc phục sự cố đó. – jszobody