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

Forms SilverStripe 3.1.x-扩展lostpassword表单以包含验证码,forms,captcha,core,silverstripe,extending,Forms,Captcha,Core,Silverstripe,Extending,在SilverStripe 3.1.x中扩展/修改LostPasswordForm以包含recaptcha的最佳/正确方法是什么?另一个安全问题,被归类为中等风险。他们是这么说的: 观察:忘记密码功能可用于发送垃圾邮件 管理员用户的电子邮件地址 受影响的URL示例: 影响:恶意用户可能会使用机器人或自动方法 重复提交忘记密码请求。电子邮件收件箱可能是 由于大量消息而变得不可访问或无用 建议:实施一次性使用质询响应测试,如 在忘记密码请求期间作为验证码,以防止自动 机器人程序或是用来减慢试图向

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

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

受影响的URL示例:

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

建议:实施一次性使用质询响应测试,如 在忘记密码请求期间作为验证码,以防止自动 机器人程序或是用来减慢试图向用户发送大量电子邮件的人的速度 收件箱。此验证码功能应在使用一次后过期


由于时间在这里至关重要,任何指示(甚至一个完整的解决方案)都将不胜感激。在核心实现黑客攻击很容易,但这不是最佳实践。有人能分享一下如何正确扩展吗?

我认为覆盖默认模板是一种方法,
但是您应该能够使用扩展
MemberLoginForm
的自定义类,而不是更改核心文件

_config.php

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

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