firesphere / haveibeenpwnd
检查用户密码是否在“我已经被泄露”数据库中。
Requires
- php: >=7.4
- guzzlehttp/guzzle: ^6|^7
- silverstripe/framework: ^4|^5
Requires (Dev)
- phpunit/phpunit: >=5.7
- silverstripe/recipe-cms: ^4
- squizlabs/php_codesniffer: 3.*
README
此模块不是双因素认证的替代品。
如果发现用户的密码被泄露,将主动锁定用户,并强制其重置密码。
尽管它增加了用户安全性并强制使用唯一的密码,但此模块不会防止任何像“我已经被泄露”使用的密码泄露。
免责声明
如果此模块破坏了您的网站,您将保留所有碎片。
为SilverStripe提供的“我已经被泄露”
此模块在密码更改和登录时检查,如果密码的SHA1出现在“我已经被泄露”数据库中。
永远不会将完整密码传输到“我已经被泄露”,只传输密码SHA1的前5个字符,然后将“我已经被泄露”的响应在本地进行比较。
鉴于“我已经被泄露”的性质,即使密码被拦截(连接是HTTPS,Troy Hunt在安全方面并不容易),密码已经出现在野外,因此这种情况不太可能造成更多泄露。
仅收集密码在数据库中出现的次数,以及其中包含用户电子邮件或用户名的已知泄露。关于密码和电子邮件的信息是不相关的。“我已经被泄露”不提供两者之间的关联。故意为之。
要求
SilverStripe框架4.x+ GuzzleHttp 6.x+ PHP 8.0+
安装
composer require firesphere/haveibeenpwnd
配置
调用“我已经被泄露”API需要一个密钥。有关为什么需要密钥的完整博客文章,请参阅此处。
要配置此模块以使用密钥,请在您的服务器或您的.env上定义一个环境变量
HIBP_API_KEY="MYAPIKEY1234567898765431"
其他配置可以在YML中完成
---
Name: MyPwnConfig
after: HaveIBeenPwnedConfig
---
Firesphere\HaveIBeenPwned\Services\HaveIBeenPwnedService:
allow_pwnd: false
save_pwnd: true
---
Only:
environment: dev
---
Firesphere\HaveIBeenPwned\Services\HaveIBeenPwnedService:
allow_pwnd: true
参数
allow_pwnd
如果设置为true,则允许在“我已经被泄露”数据库中出现的密码
save_pwnd
如果设置为true,则保存所有包含用户用户名或电子邮件地址的泄露
将验证器扩展应用到其他密码验证器
将以下内容添加到您的任一配置yml文件中。(建议使用extensions.yml
文件)
MyVendor\MyNameSpace\MyPasswordValidator:
extensions:
- Firesphere\HaveIBeenPwned\Extensions\PasswordValidatorExtension
将vendor\namespace\validator替换为您自己的Validator命名空间和类名
默认情况下,如果默认的PasswordValidator未注册,此模块将注册它以确保更改被应用。您可以在自己的_config.php
文件中覆盖此操作。
仅环境
为了不让工程师的生活变得不可能,并允许在dev
模式下使用pwnd密码,默认情况下,在dev
模式下关闭Pwnd服务
我可以用吗?
简单来说?当然。承认,这是一个开源软件,在理论上,您可以以任何方式使用它。
您可以通过购买使用订阅来许可此作品。它将允许您请求支持,或者只是支持开发者。
您是否阅读了整个README?您真棒!
下面的图片是一头牛,仅供您欣赏。
/( ,,,,, )\
_\,;;;;;;;,/_
.-"; ;;;;;;;;; ;"-.
'.__/`_ / \ _`\__.'
| (')| |(') |
| .--' '--. |
|/ o o \|
| |
/ \ _..=.._ / \
/:. '._____.' \
;::' / \ .;
| _|_ _|_ ::|
.-| '==o==' '|-.
/ | . / \ | \
| | ::| | | .|
| ( ') (. )::|
|: | |; U U ;|:: | `|
|' | | \ U U / |' | |
##V| |_/`"""`\_| |V##
##V## ##V##