防止暴力登录破解-Symfony5全面开发

您需要登录后才可观看此视频

为了更好的为您提供服务,请您登录后再查看本课程。

立即登录 注册账号

通常在用户登录界面,会在表单下面添加一个验证码字段。只有输入正确的验证码才可以登录,这样有效的防止密码的暴力破解。我们使用了新的认证系统。Symfony提供了另外一个功能,可以限制用户的登录次数。

我要搜索symfony security,查看一下Symfony的文档。我们往下看,Symfony从5.2版本开始,可以对登录的次数进行限制。在main防火墙下添加一个配置就可以了,默认情况下它会限制五次尝试登录的次数。我们还可以对这个次数进行限制,还可以限制登录的间隔。

我们复制这段配置,回到项目,打开security.yaml配置文件,在main防火墙下我们粘贴这段配置。

#config/packages/security.yaml

security:
    # ...
    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            # ...

            login_throttling:
                max_attempts: 3
        # ...

回到浏览器,回到登录页面。我们尝试登录几次,分别输入几次错误的密码,点击登录。这里提示我们登录限制还需要安装一个组件。我们安装一下这个包,打开控制台粘贴命令行。

composer require symfony/rate-limiter

回到浏览器刷新页面,第一次我们的密码错了。我们再次登录,密码还是错的。我们第三次登录。当我们第四次登录时,它会提示我们登录的次数过多,请在一分钟后再试。这就是新的认证系统新增加的一个功能。

当我们在删除用户时,有两种方案。第一种是删除用户的所有数据,第二种是为用户添加一个被删除字段。当被删除字段中有值的时候,说明当前用户已经被删除了,这样用户的账号就不能再次使用了。

在下节课,我们使用UserChecker来实现第二个方案。

课程讨论

当前内容评论功能已关闭。