Por que é um risco de segurança permitir barras codificadas em um URI?
Tenho uma situação em que quero barras codificadas em um URI %2F
), mas o meu.htaccess
s regras @ são ignoradas quando faço a solicitação, enviando-me para uma página 404. Encontrei rapidamente a diretiva ApacheAllowEncodedSlashes
, que pretendo ativar, mas ainda não entendo por que isso representa um risco à segurança. Ninguém poderia transformar manualmente as barras codificadas em barras reais, se estivesse tentando ser nefasto? (Embora eu não possa ver que mal eles poderiam causar ...)
O aplicativo que estou testando é escrito em PHP, e a regra mod_rewrite que faz interface com ele se parece co
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^test/(.*)$ /test.php?_escaped_fragment_=$1 [NE,QSA,L]
Eu só quero ter certeza de entender os riscos antes de prossegui
Para esclarecer: o Apache não permite barras codificadas nocaminh, mas eles são permitidos na string de consulta. A string de consulta é igualmente suscetível às explorações listadas por Christian abaixo ("Execução remota de código, acesso a arquivos locais e busca de diretório").
Então, por que o ASF chegou ao ponto de criar uma diretiva especial apenas para permitir esse comportamento? Não estou tentando ser difícil, simplesmente não entendo. Acho que é óbvio que qualquer entrada do usuário (incluindo o URI) precisa ser verificada antes de ser usada em qualquer função de banco de dados ou sistema de arquivo