firesphere/haveibeenpwnd

检查用户密码是否在“我已经被泄露”数据库中。

安装: 150

依赖项: 1

建议者: 0

安全: 0

类型:silverstripe-vendormodule

2.1.0 2023-11-14 01:49 UTC

This package is auto-updated.

Last update: 2024-09-07 11:37:52 UTC


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##