如果我使用损坏的参数调用password_verify()会发生什么?

时间:2018-04-16 13:04:03

标签: php parameters sanitization

根据its documentation PHP的password_verify()函数

  

如果密码和哈希匹配则返回TRUE,否则返回或FALSE     [由我添加的亮点]

文档还指出函数参数是:

  

password用户的密码。

     

hash由password_hash()创建的哈希。

对于错误 / 例外 / 警告,对于这些参数“已损坏”或无效。

一些快速测试表明,对于传入“垃圾”(特别是hash参数),问题相当宽容。我的问题是,我是否可以依赖这种行为,因为它会在“返回[...]或其他方面”部分暗示?

1 个答案:

答案 0 :(得分:1)

对于PHP文档:如果没有提到异常/错误/警告,则不会出现异常/错误/警告。如果遇到没有任何文档的异常,则它是文档中的BUG,您可以将其报告给PHP团队进行修复。所以写一个干净的if (!password_verify(...))是可以的。

对于password_verify:区分无效哈希或密码验证密码错误是没有意义的,因此如果哈希值与密码不匹配,password_verify只返回false。这种行为使编程更容易。