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 № 1Você 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.