Как стать автором
Поиск
Написать публикацию
Обновить

Финт ушами, или еще ода защита LiveStreet от спама

Здравствуй, %username%.

Сегодня я поделюсь с тобой еще одним способом защитить твой LiveStreet от ботов. Способ заключается в генерации имен полей формы абсолютно не гуманоидного вида и изменяющиеся каждый день.

Для этого нам потребуется модификация двух файлов.

Для начала открываем файл темы actions/ActionRegistration/index.tpl и находим там к примеру строку:

input tabindex="5" type="text" name="captcha" value="" maxlength="3" class="input-text input-100"
И изменяем ее на:
input tabindex="5" type="text" name="{php}echo md5('captcha'.date('Y-m-d')){/php}" value="" maxlength="3" class="input-text input-100"

Сохраняем и открываем другой файл который находится от корня сайта по пути classes/actions/ActionRegistration.class.php в котором ищем следующий текст:

/**
* Проверка капчи(циферки с картинки)
*/
if (!isset($_SESSION['captcha_keystring']) or $_SESSION['captcha_keystring']!=strtolower(getRequest('captcha'))) {
$this->Message_AddError($this->Lang_Get('registration_captcha_error'),$this->Lang_Get('error'));
$bError=true;
}
Делаем в нем изменения:
/**
* Проверка капчи(циферки с картинки)
*/
if (!isset($_SESSION['captcha_keystring']) or $_SESSION['captcha_keystring']!=strtolower(getRequest(md5('captcha'.date('Y-m-d'))))) {
$this->Message_AddError($this->Lang_Get('registration_captcha_error'),$this->Lang_Get('error'));
$bError=true;
}

Данное действие можно совершить со всеми полями формы, что в принципе должно дать более положительный результат.

Дополнительно можно усечь длину имени поля до 5 символов со сдвигом используя substr(md5('captcha'.date('Y-m-d')), 4, 5).

Из отрицательных сторон этого способа вижу, что некий счастливчик может умудриться попасть на смену дат и у него не получится зарегистрироваться.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.