NotCompromisedPassword
编辑本页NotCompromisedPassword
通过检查给定的密码是否包含在跟踪的任何公共数据泄露中,验证给定的密码是否已被泄露haveibeenpwned.com.
基本用法
下面的约束确保rawPassword
的属性用户
类不存储泄露的密码:
- 属性
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9 10
/ / src /实体/ User.php名称空间应用程序\实体;使用欧宝娱乐app下载地址\组件\验证器\约束作为断言;类用户{#(断言\ NotCompromisedPassword)受保护的$rawPassword;}
1 2 3 4 5
#配置/验证器/ validation.yaml应用实体\ \用户:属性:rawPassword:-NotCompromisedPassword
12 3 4 5 6 7 8 9 10 11 12
<!--config/validator/validation.xml --><??> . xml version="1.0" encoding="UTF-8"<constraint-mappingxmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/constraint-mapping”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/constraint-mapping //www.oldmanjams.com/schema/dic/constraint-mapping/constraint-mapping-1.0.xsd”><类的名字=“应用程序实体\ \用户”><财产的名字=“rawPassword”><约束的名字=“NotCompromisedPassword”>约束>财产>类>constraint-mapping>
12 3 4 5 6 7 8 9 10 11 12 13
/ / src /实体/ User.php名称空间应用程序\实体;使用欧宝娱乐app下载地址\组件\验证器\约束作为断言;使用欧宝娱乐app下载地址\组件\验证器\映射\ClassMetadata;类用户{公共静态函数loadValidatorMetadata(ClassMetadata$元数据){$元数据->addPropertyConstraint (“rawPassword”,新维护\ NotCompromisedPassword ());}}
为进行密码验证,此约束不将原始密码值发送给haveibeenpwned.com
API。相反,它遵循一个被称为k匿名密码验证.
实际上,原始密码使用SHA-1进行散列,并且只发送散列的前几个字节。然后,haveibeenpwned.com
API将这些字节与所有泄露密码的SHA-1哈希值进行比较,并返回以这些字节开头的哈希值列表。这就是约束在不完全泄露密码的情况下检查密码是否已泄露的方式。
例如,如果密码为测验
,则整个SHA-1哈希值为a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
但是验证器只发送a94a8
到haveibeenpwned.com
API。
另请参阅
在Symfony应用程序中使用此约束时,定义欧宝娱乐app下载地址not_compromised_password选项中避免发出HTTP请求dev
而且测验
环境。
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。
版本: