/ / Como detectar suporte para .htaccess em PHP no servidor Apache (e outros servidores) - php, apache, .htaccess, nginx, lighttpd

Como detectar suporte para .htaccess em PHP no servidor Apache (e outros servidores) - php, apache, .htaccess, nginx, lighttpd

Por motivos de segurança, preciso verificar se um diretório não é legível por um cliente, isto é que o servidor Apache suporta o .htaccess (não AllowOverride None nos arquivos de configuração do apache). Isso é muito importante, pois descobri recentemente que MUITOS produtos e frameworks não estão verificando isso (incluindo Zend e Symphony). Existe uma maneira de verificar isso usando apenas PHP?

BTW, me corrija se eu estiver errado, mas parece que outros servidores (nginx ou lighttpd) não suportam .htaccess. Nestes casos, como posso verificar se meu diretório não é legível por um cliente?

Respostas:

1 para resposta № 1

Você poderia usar SetEnvIf no htaccess para definir uma variável e, em seguida, acessá-lode dentro do PHP. Isso dirá se o htaccess está sendo usado (e o módulo SetEnvIf está em execução). Mas ele não lhe dirá muito mais - ele não lhe dirá se o mod_rewrite está disponível, por exemplo. Para dizer quais módulos estão em execução, você pode verificar a saída do phpinfo programaticamente.


1 para resposta № 2

Talvez você possa fazer o upload do arquivo .htaccess com tal conteúdo:

Options -Indexes

para sua raiz e tente acessar diretórios em questão, se não estiverem acessíveis, funciona.

Se não, seu host deve ser capaz de ajudá-lo facilmente com isso plataforma você está ligado.


1 para resposta № 3

Você pode verificar arquivos por is_readable(".htaccess").

print_r(apache_get_modules()) irá mostrar-lhe os módulos do Apache carregados.