如果我使用损坏的参数调用 password_verify() 会怎样?

What happens if I call password_verify() with corrupted parameters?

根据its documentationPHP的password_verify()函数

Returns TRUE if the password and hash match, or FALSE otherwise. [highlight added by me]

文档还指出函数参数是:

password The user's password.

hash A hash created by password_hash().

文档没有提供任何关于 errors/exceptions/warning 的见解对于这些参数为 "corrupted" 或无效的情况。

一些快速测试告诉我这个问题对于传入 "garbage" 是相当宽容的(特别是在 hash 参数中)。我的问题是我是否可以依赖这种行为,因为它在 "Returns[...]or FALSE otherwise" 部分中有所暗示?

对于PHP文档:如果没有提到exception/error/warning,那么就不会有exception/error/warning。如果在没有任何文档的情况下遇到异常,则为文档中的BUG,可以反馈给PHP团队修复。所以写个干净的if (!password_verify(...))就OK了。

对于password_verify:密码验证时区分hash无效或密码错误是没有意义的,所以password_verify如果hash不匹配就returns false密码。这种行为使编程更容易。