如果我使用损坏的参数调用 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
密码。这种行为使编程更容易。
根据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
密码。这种行为使编程更容易。