SilverStripe 3.1.x - 扩展丢失密码形式以包含验证码

问题描述 投票:0回答:1

在 SilverStripe 3.1.x 中扩展/修改 LostPasswordForm 以包含验证码的最佳/正确方法是什么?另一个安全问题,被列为中等风险。他们是这样说的:

观察: 忘记密码功能可用于向 管理员用户的电子邮件地址。

受影响的 URL 示例: http://example.com/Security/LostPasswordForm

影响: 恶意用户可能会使用机器人或自动化方法来 重复提交忘记密码请求。电子邮件收件箱可能是 由于大量消息而导致无法访问或无用。

Defect - Request Replay

建议:实施一次性使用质询-响应测试,例如 在忘记密码请求期间作为验证码,以防止自动 机器人或减缓试图淹没用户电子邮件的人类 收件箱。此验证码功能在使用一次后就会过期。

由于时间至关重要,因此任何指示(甚至完整的解决方案)将不胜感激。从核心实施黑客攻击很容易,但这不是最佳实践。有人可以分享如何通过正确扩展来完成吗?

forms captcha silverstripe
1个回答
2
投票

我认为覆盖默认模板是正确的方法,
但您应该能够使用扩展

MemberLoginForm
的自定义类,而不是更改核心文件...

_config.php

Object::useCustomClass('MemberLoginForm', 'MyExtendedMemberLoginForm');

MyExtendedMemberLoginForm.php

class MyExtendedMemberLoginForm extends MemberLoginForm {
  //override methods, add your fields...
}
© www.soinside.com 2019 - 2024. All rights reserved.