在SilverStripe 3.1.x中扩展/修改LostPasswordForm以包含recaptcha的最佳/正确方法是什么?另一个安全问题,被归类为中等风险。这就是他们所说的:
观察:忘记密码功能可用于垃圾邮件 管理员用户的电子邮件地址。
示例受影响的网址 http://example.com/Security/LostPasswordForm
影响:恶意用户可能会使用机器人或自动方法 反复提交忘记密码请求。电子邮件收件箱可能是 由于大量的消息而无法访问或无用。
建议:实施一次性使用质询 - 响应测试等 在忘记密码请求期间作为CAPTCHA以防止自动化 机器人或减慢试图淹没用户电子邮件的人的速度 收件箱。此CAPTCHA功能应在一次使用后过期。
由于时间在这里至关重要,任何指针(甚至是完整的解决方案)都将非常感激。实施黑客攻击很容易,但这不是最佳实践。有人可以分享如何通过适当扩展来完成它吗?
答案 0 :(得分:2)
我认为重写默认模板是可行的方法,
但是您应该能够使用扩展MemberLoginForm
的自定义类而不是更改核心文件...
_config.php
Object::useCustomClass('MemberLoginForm', 'MyExtendedMemberLoginForm');
MyExtendedMemberLoginForm.php
class MyExtendedMemberLoginForm extends MemberLoginForm {
//override methods, add your fields...
}