#wordpress #.htaccess #mod-rewrite #post
#wordpress #.htaccess #mod-переписать #Публикация
Вопрос:
Мой сайт WordPress завален запросами post. Количество запросов приближается к 200 000 в день.
Вот пример журнала доступа apache:
218.75.48.179 - - [24/Jun/2014:13:16:13 -0700] "POST / HTTP/1.1" 403 - "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
195.226.235.101 - - [24/Jun/2014:13:16:13 -0700] "POST / HTTP/1.1" 403 - "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
186.116.184.32 - - [24/Jun/2014:13:16:14 -0700] "POST / HTTP/1.1" 403 - "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
95.43.217.197 - - [24/Jun/2014:13:16:14 -0700] "POST / HTTP/1.1" 403 - "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
110.168.188.207 - - [24/Jun/2014:13:16:14 -0700] "POST / HTTP/1.1" 403 - "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
113.161.194.225 - - [24/Jun/2014:13:16:14 -0700] "POST / HTTP/1.1" 403 - "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
80.9.11.226 - - [24/Jun/2014:13:16:14 -0700] "POST / HTTP/1.1" 403 - "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
Я пытаюсь заблокировать эти запросы с помощью mod_rewrite, при этом позволяя работать коду wordpress mod_rewrite. То, что у меня есть до сих пор, неправильно блокирует запросы. Может кто-нибудь взглянуть и дать мне несколько предложений?
Вот мой файл .htaccess:
ErrorDocument 403 "403 Error"
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{HTTP_REFERER} ^$
RewriteCond %{HTTP_USER_AGENT} "^Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
RewriteRule ^.* 403 [F,L]
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Ответ №1:
В настоящее время я отказываю во всем трафике, кроме моего IP-адреса.
Вы не должны использовать %{HTTP_REFERER}
для этого. %{REMOTE_ADDR}
Для этого вам нужно использовать:
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REMOTE_ADDR} !=11.22.33.44
RewriteCond %{HTTP_USER_AGENT} "^Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
RewriteRule ^.* 403 [F,L]
Измените 11.22.33.44
свой фактический IP-адрес.
Комментарии:
1. Извините. Я думаю, что мой оригинальный пост может быть немного запутанным. Я удалю предложение «В настоящее время я запрещаю весь трафик, кроме моего IP-адреса», поскольку эта часть файла htaccess не отображается выше и находится там только до тех пор, пока раздел mod_rewrite не заработает должным образом.
2. Но вы все равно можете использовать
%{REMOTE_ADDR}
, чтобы разрешить только вашему компьютеру делать POST. Это намного безопаснее, чем слабая%{REMOTE_ADDR}
проверка.3. Ха, я раньше не видел
!=
. Круто. 🙂4. Разве это не помешает законным пользователям отправлять контактную форму?
5. До сих пор вы не указали требование, чтобы у вас также были законные формы POST. В любом случае, как вы думаете
RewriteCond %{HTTP_REFERER} ^$
, это помогло бы вам, поскольку клиенты могут отправлять любые непустые ссылки, чтобы обойти это.