2016-06-13 13 views
5

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

+4

Bạn đang sử dụng hệ điều hành nào? – jszobody

+0

Mật khẩu trống sẽ vẫn trả lại băm. –

+3

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

Trả lời

0

Hóa ra tôi gặp sự cố với cài đặt php7 hiện tại. Tôi chuyển sang PHP5.6 và mọi thứ hoạt động tốt.

+3

Trong khi đó là tốt để nghe, bởi vẫn không biết những gì vấn đề thực sự đã không thực sự giúp bất cứ ai ': - /' – Martin

+0

Nếu bạn có thể khám phá những gì gây ra điều này (một số vấn đề truy cập PHP tối nghĩa trên máy chủ có lẽ?) bạn có thể thêm nó vào câu trả lời của bạn không? Chúc mừng. – Martin

+0

Gọi hàm này http://php.net/manual/en/function.random-bytes.php. Nó sẽ ném một ngoại lệ với một lời giải thích lý do tại sao nó không thể thu thập dữ liệu ngẫu nhiên để tạo ra muối. – robinkunde

Các vấn đề liên quan