php - 为 password_hash() 清理密码

标签 php security passwords password-hash

我在阅读有关使用 password_hash() 时的空字节问题。这给了我两个问题:

  • 从 PHP7 开始,空字节漏洞是否仍然存在?我尝试使用 password_hash() 复制它,但要么它已修复,要么我无法复制它。当 \0 之后的字符不同或不存在时,password_verify() 返回 false。
  • 在处理密码时,还有什么其他注意事项我应该注意的吗?我不想对它们本身进行清理(用户需要确保处理后的密码字符串正是他们发送的),但我看到了这样的代码(再次,与空字节相比):str_replace(chr (0), '', $输入).我应该在处理密码时使用它吗?我还应该使用其他东西吗?

最佳答案

你可以测试一下

$hash = password_hash("\x00 abc", PASSWORD_DEFAULT);
var_dump(password_verify("\x00 foo", $hash)); // true ???

但是当从 ie 表单提交密码时,您会收到字符串“\x00 password”,它不会像“\x00 password”那样插入(单引号与双引号)。

$hash = password_hash("\x00 abc", PASSWORD_DEFAULT);
var_dump(password_verify('\x00 foo', $hash)); // false!

关于php - 为 password_hash() 清理密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49245637/

相关文章:

Java : How to read password from file?

java - MySQL PASSWORD() 函数的 JDBCRealm 摘要

php - 正确的 PHP 循环显示帖子类别

php - 如何使用 Codeigniter 编辑记录

java - 无法找到 LoginModule 类 : com. sun.security.auth.module.UnixLoginModule

security - 保护 OPKG 存储库的安全

java - 使用java登录windows

php - 使用javascript分配一个php变量

php - 如何从数据库中获取值以在 PHP 中进行验证?

.net - 导出 RSA key 时出现问题 -'key not valid for use in specified state'