SilverStripe 3.1.x - Расширить форму lostpassword, добавив в нее капчу

Какой лучший / правильный способ расширить / изменить LostPasswordForm в SilverStripe 3.1.x для включения рекапчи? Еще одна проблема безопасности, классифицированная как средняя. Вот что они говорят:

Наблюдение: Функцию "Забыли пароль" можно использовать для рассылки спама на адрес электронной почты пользователя с правами администратора.

Пример затронутого URL: http://example.com/Security/LostPasswordForm

Воздействие: злоумышленник может использовать бота или автоматизированный метод для повторной отправки запроса на восстановление пароля. Входящие сообщения электронной почты могут оказаться недоступными или бесполезными из-за большого количества сообщений.

Дефект - запросить повторное воспроизведение

Рекомендация. Реализуйте одноразовый тест «вызов-ответ», такой как CAPTCHA, во время запроса «Забыли пароль», чтобы предотвратить автоматические боты или замедлить людей, которые пытаются переполнить почтовые ящики пользователя. Эта функция CAPTCHA должна истечь после одного использования.

Поскольку время здесь имеет существенное значение, любые указатели (или даже полное решение) были бы очень признательны. Было бы легко реализовать взлом ядра, но это не лучшая практика. Может кто-нибудь поделится, как это сделать, правильно расширив?


person D-L    schedule 11.06.2014    source источник


Ответы (1)


Я думаю, что можно переопределить шаблон по умолчанию,
но вы должны иметь возможность использовать собственный класс, расширяющий MemberLoginForm, а не изменять основной файл ...

_config.php

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

MyExtendedMemberLoginForm.php

class MyExtendedMemberLoginForm extends MemberLoginForm {
  //override methods, add your fields...
}
person mgherkins    schedule 11.06.2014