我在阅读使用password_hash()
时的空字节问题。这给了我两个问题:
password_verify()
之后的字符不同或不存在时,\0
会返回false。str_replace(chr(0), '', $input)
。处理密码时我应该使用它吗?我也应该使用其他东西吗?答案 0 :(得分:3)
您可以使用
进行测试$hash = password_hash("\x00 abc", PASSWORD_DEFAULT);
var_dump(password_verify("\x00 foo", $hash)); // true ???
但是当您从表格中提交密码时,您会收到字符串' \ x00密码'这将不插入像" \ x00密码" (单引号和双引号)。
$hash = password_hash("\x00 abc", PASSWORD_DEFAULT);
var_dump(password_verify('\x00 foo', $hash)); // false!