Usando o htaccess no Apache para bloquear a entrada da string de consulta

1

Eu tenho olhado isso por um tempo, não consigo entender, provavelmente uma madeira para o cenário das árvores.

Estou tentando usar o HTACCESS para bloquear determinadas entradas em um servidor da Web, então adicionei as seguintes diretivas:

#######################################
## QUERY STRING / HTTP METHOD BLOCKS ##
#######################################
# request query string contains /proc/self/environ
RewriteCond %{QUERY_STRING} proc\/self\/environ [NC,OR]
#request query string contains base64_encode / base64_decode
RewriteCond %{QUERY_STRING} base64_(en|de)code[^(]*\([^)]*\) [NC,OR]
# Block <script> in query string
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
# Block out any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) [NC,OR]
# Prevent use of specified methods in HTTP Request 
RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK) [NC,OR] 
# Block out use of illegal or unsafe characters in the HTTP Request 
RewriteCond %{THE_REQUEST} ^.*(\r|\n|%0A|%0D).* [NC,OR] 
# Block out use of illegal or unsafe characters in the Referer Variable of the HTTP Request 
RewriteCond %{HTTP_REFERER} ^(.*)(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR] 
# Block out use of illegal or unsafe characters in any cookie associated with the HTTP Request 
RewriteCond %{HTTP_COOKIE} ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR] 
# Block out use of illegal characters in URI or use of malformed URI 
RewriteCond %{REQUEST_URI} ^/(,|;|:|<|>|">|"<|/|\\.\.\).{0,9999}.* [NC,OR] 
# Block out  use of illegal or unsafe characters in the User Agent variable 
RewriteCond %{HTTP_USER_AGENT} ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR] 
# Measures to block out  SQL injection attacks 
RewriteCond %{QUERY_STRING} ^.*(;|<|>|'|"|\)|%0A|%0D|%22|%27|%3C|%3E|%00).*(/\*|union|select|insert|cast|set|declare|drop|update|md5|benchmark).* [NC,OR] 
# Block out  reference to localhost/loopback/127.0.0.1 in the Query String 
RewriteCond %{QUERY_STRING} ^.*(localhost|loopback|127\.0\.0\.1).* [NC,OR] 
# Block out  use of illegal or unsafe characters in the Query String variable 
RewriteCond %{QUERY_STRING} ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC]
RewriteRule ^(.*)$ - [F]

Depois de adicionar isso, eu esperava que, se eu abrisse o seguinte URL:

Gostaria de receber um erro 403 de volta, mas tudo o que estou vendo é page.php. A conclusão é que as diretivas estão mal formadas e não estão sendo seguidas.

Alguém poderia oferecer alguma orientação sobre onde posso ter errado?

    
por MrEyes 27.09.2013 / 22:04

1 resposta

0

Verifique se você especificou RewriteEngine On e se configurou corretamente para analisar o arquivo htaccess. Verifique seus logs de log de pistas. Se você fizer uma simples reescrita que não está funcionando, provavelmente não carregou o seu htaccess. Tente colocá-los em um httpd.conf e execute httpd -S para verificação de sintaxe. Tem que ter certeza que as reescritas estão funcionando primeiro, então você pode consertar quaisquer erros de regex.

    
por 28.09.2013 / 04:53