SilverStripe 3.1.x - 扩展lostpassword表单以包含验证码

时间:2014-06-11 12:41:00

标签: forms captcha core silverstripe extending

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

  

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

     

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

     

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

Defect - Request Replay

  

建议:实施一次性使用质询 - 响应测试等   在忘记密码请求期间作为CAPTCHA以防止自动化   机器人或减慢试图淹没用户电子邮件的人的速度   收件箱。此CAPTCHA功能应在一次使用后过期。

由于时间在这里至关重要,任何指针(甚至是完整的解决方案)都将非常感激。实施黑客攻击很容易,但这不是最佳实践。有人可以分享如何通过适当扩展来完成它吗?

1 个答案:

答案 0 :(得分:2)

我认为重写默认模板是可行的方法,
但是您应该能够使用扩展MemberLoginForm的自定义类而不是更改核心文件...

_config.php

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

MyExtendedMemberLoginForm.php

class MyExtendedMemberLoginForm extends MemberLoginForm {
  //override methods, add your fields...
}