nidhognit / pass-security-bundle
Symfony PassSecurityBundle
Requires
- php: ^5.5.9 || ^7.0
- doctrine/doctrine-bundle: ^1.6
- doctrine/orm: ^2.3
- incenteev/composer-parameter-handler: ^2.0
- symfony/config: ^2.7 || ^3.0 || ^4.0
- symfony/console: ^2.7 || ^3.0 || ^4.0
- symfony/dependency-injection: ^2.7 || ^3.0 || ^4.0
- symfony/framework-bundle: ^2.7 || ^3.0 || ^4.0
- symfony/yaml: ^2.7 || ^3.0 || ^4.0
Requires (Dev)
- phpunit/phpunit: ^5.7
- sensio/generator-bundle: ^3.0
- symfony/phpunit-bridge: ^3.0
This package is not auto-updated.
Last update: 2024-09-23 15:18:50 UTC
README
PassSecurityBundle 旨在帮助测试密码是否进入不安全密码列表。
该捆绑包仅检查列表中的密码,并告诉您它在哪个数字下被发现,您可以根据自己的判断来决定它的安全性(或者您可以将其报告给您的用户,并将责任转移到他们身上)。
我强烈建议不要使用本列表中发现的任何密码。
演示示例
网站: https://demo-pass-security-bundle.herokuapp.com
源代码: https://github.com/Nidhognit/demo-pass-security-bundle
安装
如果您使用 composer,请打开命令行,进入您的项目目录并执行以下命令
$ composer require nidhognit/pass-security-bundle "0.2"
如下启用 Bundle
// app/AppKernel.php // ... class AppKernel extends Kernel { public function registerBundles() { $bundles = array( // ... new \Nidhognit\PassSecurityBundle\PassSecurityBundle(), ); // ... } // ... }
捆绑包提供合理的默认配置。如果需要更改,可以在 config.yml 中定义这些配置(有关捆绑包配置的更多信息见下文)。
如何使用
以下示例中,我们假设您希望在用户提交表单之前检查密码
// ... /** * @Route("/ajax_password_check") * @param Request $request * @return JsonResponse */ public function ajaxPasswordCheckAction(Request $request) { $password = $request->get('password'); //password from user $limit = null; // if you want, you can limit password search (type of this variable must bu integer) $passManager = $this->get('pass_security.manager'); $number = $passManager->getNumberOrNull($password, $limit); return new JsonResponse(['number' => $number]); } // ...
在这种情况下,您必须使用 HTTPS,如果您使用 HTTP,则非常危险,因为存在 MITM 的可能性。
您还可以使用控制台命令
$ bin/console passbundle:check 123456
其中 123456 - 您的自定义密码。
文档
默认配置
pass_security: type: "file"
“类型”的值可以是 file(默认),base 或 custom。
类型 "file"
在这种情况下,密码将从文件中读取。默认文件包含 100,000 个密码,您可以使用自己的文件
pass_security: type: "file" file: "path/custom.txt"
其中
custom.txt- 必须具有 ".txt" 扩展名;path- 是绝对路径;- 文件中的每个新密码都从新的一行开始;
默认捆绑包有一些密码文件
Pass100k(默认选择)- 100,000 个常用密码列表;Pass1M- 1,000,000 个常用密码列表;
示例(选择包含 1,000,000 个密码的文件)
pass_security: type: "file" file: Pass1M
类型 "base"
在这种情况下,密码将从数据库中读取。默认配置如下所示
pass_security: type: "base"
您可以配置以下变量
pass_security: type: "base" class: \AcmeBundle\Entity\MyCustomEntity repository: AcmeBundle:MyCustomEntity
要求
MyCustomEntity必须实现接口InterfacePassSecurityEntity。
您可以使用您自己的数据库中的密码数据,或者可以使用以下控制台命令将所有数据从文件中传输
$ bin/console passbundle:base
此命令将所有密码从 "file"(默认为 Pass100K)写入由实体 "class"(默认为 'pass_security_base')定义的表中。默认情况下,此命令将使用实体,如果您使用非常大的文件,则可能需要大量时间和内存。
如果您不需要创建实体,则可以使用选项 "--sql" 如此
$ bin/console passbundle:base --sql
类型 "custom"
您还可以创建自己的服务来检查密码。
pass_security: type: "custom" custom_service: "acme_bundle.my_service"
要求
- 服务必须实现接口
InterfaceReader; - 服务必须可以从容器中下载。