Стандартная капча от Битрикса, не смогла защитить от массовой регистрации левых пользователей. Было решено заменить ее на recaptcha от Гугла.
Замена стандартной капчи Битрикс на recaptcha (форма регистрации)
13.03.2019
В файлах формы для регистрации Юр и Физ лиц (bitrix/templates/.default/components/bitrix/main.register/template_reg_yur1/template.php и bitrix/templates/.default/components/bitrix/main.register/template_reg_fiz1/template.php)
Закомментировал:
/* CAPTCHA */
if ($arResult["USE_CAPTCHA"] == "Y")
{
?>
<tr>
<td colspan="2"><b><?=GetMessage("REGISTER_CAPTCHA_TITLE")?></b></td>
</tr>
<tr>
<td></td>
<td>
<input type="hidden" class="inner_sing_up_input input_style" name="captcha_sid" value="<?=$arResult["CAPTCHA_CODE"]?>" />
<img src="/bitrix/tools/captcha.php?captcha_sid=<?=$arResult["CAPTCHA_CODE"]?>" width="180" height="40" alt="CAPTCHA" />
</td>
</tr>
<tr>
<td><?=GetMessage("REGISTER_CAPTCHA_PROMT")?>:<span class="starrequired">*</span></td>
<td><input type="text" class="inner_sing_up_input input_style" name="captcha_word" maxlength="50" value="" /></td>
</tr>
<?
}
/* !CAPTCHA */
а вместо этого вставил:
<tr>
<td colspan="2"><b><?=GetMessage("REGISTER_CAPTCHA_TITLE")?></b></td>
</tr>
<tr>
<td colspan="2">
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<div class="g-recaptcha" data-sitekey="PABLIC_KEY"></div>
</td>
</tr>
Также в компоненте проверки регистрации (/bitrix/components/bitrix/main.register/component.php) заменил код:
// check captcha
if ($arResult["USE_CAPTCHA"] == "Y")
{
if (!$APPLICATION->CaptchaCheckCode($_REQUEST["captcha_word"], $_REQUEST["captcha_sid"]))
$arResult["ERRORS"][] = GetMessage("REGISTER_WRONG_CAPTCHA");
}
на:
// check captcha
if ($arResult["USE_CAPTCHA"] == "Y")
{
if (!recaptchaCheck())
$arResult["ERRORS"][] = 'Вы не прошли автоматическую защиту от спама';
}
и в начало файла добавил функцию recaptchaCheck из статьи Добавляем recaptcha v2 на сайт, php
TODO: - переделать этот пункт, т.к. при обновлении CMS этот файл затрется.