nidhognit/pass-security-bundle

Symfony PassSecurityBundle

安装: 555

依赖者: 0

建议者: 0

安全: 0

星标: 10

关注者: 3

分支: 1

开放问题: 0

类型:symfony-bundle

0.3 2018-05-26 18:26 UTC

This package is not auto-updated.

Last update: 2024-09-23 15:18:50 UTC


README

pass security Build Status

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(默认),basecustom

类型 "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
  • 服务必须可以从容器中下载。