У Bitrix не хватает одной опции, которая позволила бы добавить исключение для IP адреса, что бы проактивный фильтр не воспринимал атаки с этого IP, в связи с этим может возникнуть ситуация когда вы можете попасть в стоп-лист неаккуратно задав запрос в поиске сайта или добавив какой нибудь сложный элемент в html разметке контентной области сайта.
В таком случае можно программно удалять свой IP из стоп-листа повесив обработчик на агента и чекая запись раз в миниту.
Код который удалит ваш IP (адрес нужно указать) из стоп-листа Bitrix
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
public static function load(): void { global $DB; $ip = self::$rules_exclude;//например '111.111.111.111' \CModule::IncludeModule('security'); $query_exec = <<<EOT SELECT rules.ID FROM b_sec_iprule AS rules LEFT JOIN b_sec_iprule_incl_ip AS ips ON ips.RULE_IP='{$ip}' WHERE rules.ACTIVE='Y' GROUP BY rules.ID EOT; $dbQuery = $DB->query($query_exec, false, __LINE__ . ':' . __METHOD__); while ($tmp = $dbQuery->fetch()) { \CSecurityIPRule::Delete(intval($tmp['ID'])); } } |
Почему именно такая конструкция, а не прямой запрос на обновление записи в состояние отключена.
Всё просто, если вы просто сделаете update через прямой запрос, по прежнему будет существовать кэш таблицы, по этому вас не разблокирует(хотя запись будет выключена или удалена)
Но через встроенный модуль Bitrix — security, можно вызвать базовый метод Delete, где сброс кеша таблицы происходит автоматически.
Подскажите что значит «Повесить на агента»?