Блокировать POST-запросы от определенных IP-адресов - PullRequest
0 голосов
/ 10 января 2019

Неважно, как сильно я стараюсь. Мой htaccess не имеет никакого смысла. Я хочу заблокировать POST-запросы, приходящие с определенных IP-адресов.

Этот код работает и блокирует все POST-запросы:

<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_METHOD} POST
RewriteRule .* – [F,L]
</IfModule>

Мне просто нужно добавить условия в черный список IP-адресов, как показано ниже:

<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REMOTE_ADDR} =123.123.123.123 [OR]
RewriteCond %{REMOTE_ADDR} =222.222.222.222 [OR]
RewriteCond %{REMOTE_ADDR} =111.111.111.111
RewriteRule .* – [F,L]
</IfModule>

На бумаге это должно работать, но на самом деле это не так. Когда я выполняю POST с одного из IP-адресов, занесенных в черный список (например, 123.123.123.123), блок не запускается.

Что не так с моим кодом?

Прежде чем вы спросите, я не могу использовать Разрешить, Запретить и да, я использую реальные IP-адреса для запуска тестов. Я просто не хочу их публиковать: P

1 Ответ

0 голосов
/ 10 января 2019

Вам нужно экранировать точки от IP-адресов.

"" Соответствует любому отдельному символу

Вы можете попробовать код ниже:

<IfModule mod_rewrite.c>
    RewriteCond %{REQUEST_METHOD} POST
    RewriteCond %{REMOTE_ADDR} ^123\.123\.123\.123$ [OR]
    RewriteCond %{REMOTE_ADDR} ^222\.222\.222\.222$ [OR]
    RewriteCond %{REMOTE_ADDR} ^111\.111\.111\.111$
    RewriteRule .* – [F,L]
</IfModule>

Ссылка: https://httpd.apache.org/docs/2.4/rewrite/intro.html#regexvocab

...