2016-10-20 2 views
0

Я использую это .htaccess директивы для предотвращения инъекций SQL атак на мой WordPress блоге:403 Запретный ошибка при использовании mod_rewrite с WordPress

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK) [NC] 
RewriteRule ^(.*)$ - [F,L] 
RewriteCond %{QUERY_STRING} \.\.\/ [NC,OR] 
RewriteCond %{QUERY_STRING} boot\.ini [NC,OR] 
RewriteCond %{QUERY_STRING} tag\= [NC,OR] 
RewriteCond %{QUERY_STRING} ftp\: [NC,OR] 
RewriteCond %{QUERY_STRING} http\: [NC,OR] 
RewriteCond %{QUERY_STRING} https\: [NC,OR] 
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR] 
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [NC,OR] 
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [NC,OR] 
RewriteCond %{QUERY_STRING} ^.*(\[|\]|\(|\)|<|>|ê|"|;|\?|\*|=$).* [NC,OR] 
RewriteCond %{QUERY_STRING} ^.*(&#x22;|&#x27;|&#x3C;|&#x3E;|&#x5C;|&#x7B;|&#x7C;).* [NC,OR] 
RewriteCond %{QUERY_STRING} ^.*(%24&x).* [NC,OR] 
RewriteCond %{QUERY_STRING} ^.*(%0|%A|%B|%C|%D|%E|%F|127\.0).* [NC,OR] 
RewriteCond %{QUERY_STRING} ^.*(globals|encode|localhost|loopback).* [NC,OR] 
RewriteCond %{QUERY_STRING} ^.*(request|select|insert|union|declare).* [NC] 
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$ 
RewriteRule ^(.*)$ - [F,L] 
</IfModule> 

Мой блог использует перенаправление JavaScript для перенаправления посетителя со страницы открытия в в блоге со следующими параметрами строки запроса: redir=1&ref=

Таким образом, параметр «ref» обычно пуст, если посетитель не приходит из набора рефералов, например, он набрал заголовок в браузере. В других случаях параметр «ref» имеет значение, которое показывает для меня, откуда приходит посетитель.

Моя проблема заключается в том, что при первом посещении я получаю сообщение об ошибке 403:

Forbidden 

You don't have permission to access/on this server. 

Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request. 

После удаления вышеуказанных директив из .htaccess проблема также исчезает. Однако я бы хотел использовать модифицированную версию этих директив для предотвращения атак SQL-инъекций. Какие строки следует изменить, чтобы предотвратить атаки и избавиться от сообщения об ошибке «403 запрещено»?

ответ

0

Изменить эту строку:

RewriteCond %{QUERY_STRING} ^.*(\[|\]|\(|\)|<|>|ê|"|;|\?|\*|=$).* [NC,OR] 

к:

RewriteCond %{QUERY_STRING} ^.*(\[|\]|\(|\)|<|>|ê|"|;|\?|\*).* [NC,OR] 
+0

Thx, правила все еще слишком ограничены, потому что если кто-то нажимает на ссылку в GMAIL электронной почте, Гоц ошибка 403 снова. В этом случае строка запроса «ref» пытается передать значение, подобное этому: http://www.google.com/url?q=http%3A%2F%2Fexample.com&sa=D&sntz=1&usg=AFQjCNGiGAF2NA9-5MhMmwXDlT64bYKpNg – Konstantin

+0

Проблема в том, что вы можете удалить их все. Вы должны выбрать те, которые полезны или нет. – Croises

Смежные вопросы