NotCompromisedPassword
编辑本页NotCompromisedPassword
通过检查给定的密码是否包含在跟踪的任何公共数据泄露中,验证给定的密码是否已被泄露haveibeenpwned.com.
基本用法
下面的约束确保rawPassword
的属性用户
类不存储泄露的密码:
- 注释
- 属性
- YAML
- XML
- PHP
12 3 4 5 6 7 8 9 10 11 12
/ / src /实体/ User.php名称空间应用程序\实体;使用ob娱乐下载\组件\验证器\约束作为断言;类用户{/ * * *@Assert\ NotCompromisedPassword * /受保护的$rawPassword;}
为进行密码验证,此约束不将原始密码值发送给haveibeenpwned.com
API。相反,它遵循一个被称为k匿名密码验证.
实际上,原始密码使用SHA-1进行散列,并且只发送散列的前几个字节。然后,haveibeenpwned.com
API将这些字节与所有泄露密码的SHA-1哈希值进行比较,并返回以这些字节开头的哈希值列表。这就是约束在不完全泄露密码的情况下检查密码是否已泄露的方式。
例如,如果密码为测验
,则整个SHA-1哈希值为a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
但是验证器只发送a94a8
到haveibeenpwned.com
API。
另请参阅
在Symfony应用程序中使用此约束时,定义ob娱乐下载not_compromised_password选项中避免发出HTTP请求dev
而且测验
环境。
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。