Para garantir que não haja falhas de segurança que possam ser exploradas via .htaccess, como podemos ver todos os manipuladores possíveis que o Apache pode usar por meio de diretivas como SetHanlder
e AddHandler
.
Eu sei que posso encontrar alguns olhando para a saída de mod_info ou grepping através de arquivos conf (que foi uma abordagem que encontrei ao tentar encontrar uma resposta para essa pergunta), mas isso não significa que não há manipuladores disponíveis que não estão listados dessa forma. Eu imagino que eu poderia baixar e pesquisar através de todo o código fonte do Apache e de cada módulo que está carregado e ver o que eles estão registrando, mas existe uma maneira melhor?
Uma solução rápida seria não permitir AddHandler e SetHandler em .htaccess, mas isso tem suas desvantagens. Por exemplo, o Drupal tem um caso de uso válido para a diretiva SetHandler, pois o usa como parte da defesa em profundidade para impedir que scripts PHP sejam executados se alguém de alguma forma conseguir enviá-los para o site por meio de um uploader de arquivos.
Aqui estão alguns exemplos do que estou me referindo:
AddHandler server-parsed .shtml
SetHandler server-info
AddHandler application/x-httpd-php5 .php
Aqui está o caso de uso do Drupal em sites / default / files / .htaccess se alguém estiver interessado:
# Set the catch-all handler to prevent scripts from being executed.
SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
<Files *>
# Override the handler again if we're run later in the evaluation list.
SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
</Files>
EDIT 30 de julho de 2015: Esta não é uma resposta exaustiva, mas no caso de ser útil para qualquer pessoa, encontrei alguns manipuladores listados no topo de link e também lê que manipuladores personalizados podem ser criados pela diretiva Action (veja link ).
EDIT 1 de setembro de 2015: Gostaria de saber se há alguma maneira de despejar a memória de um processo httpd e encontrar os nomes dos manipuladores lá. Eu tentei isso usando o gcore, mas não tive sucesso (embora eu nunca tenha usado isso antes e recebi um aviso ao fazer isso, então não tenho certeza se estou fazendo algo errado).