Você tem algumas opções aqui. Todos os exemplos de código (um para cada abordagem) precisam ser colocados no arquivo web.config na sua pasta "uploads" (caso você não saiba disso).
1) Remover o manipulador responsável pelo processamento dos arquivos * .php (no Gerenciador do IIS é "Mapeamento do manipulador"):
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<remove name="PHP 5" />
</handlers>
</system.webServer>
</configuration>
Contras:
- Você precisa saber o nome do manipulador
- O nome do manipulador pode ser alterado em um futuro (o administrador pode mudar para manipular o PHP de uma maneira diferente, etc.)
2) Usando o módulo Request Filtering desabilite todas as solicitações para arquivos com .php
extension - o servidor enviará o erro 404.7 para o cliente. Este módulo é fornecido com o IIS 7.5, mas para o IIS 7.0 você pode precisar baixar e instalar o Pacote de Administração .
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<security>
<requestFiltering>
<fileExtensions>
<add fileExtension=".php" allowed="false" />
</fileExtensions>
</requestFiltering>
</security>
</system.webServer>
</configuration>
Se você tiver mais de uma extensão para PHP, precisará listá-las também (por exemplo, .phtml
, .php5
etc).
3) Usando o módulo de regravação de URL crie uma regra para Abortar tal solicitação.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<clear />
<rule name="Abort PHP" stopProcessing="true">
<match url="^.*\.php$" />
<action type="AbortRequest" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
- O IIS 7.0 não possui um módulo de reconfiguração de URL incluído enquanto o IIS 7.5 tem a v1.1. Infelizmente eu não tenho nenhuma v1.1 desta extensão instalada - apenas v2 e não posso verificar / garantir que isso funcionará na v1.1. De qualquer forma, recomendo baixar e instalar a versão 2 do módulo de regravação de URL .
- Você precisará estender essa regra para também capturar outras extensões de arquivo que podem ser processadas pelo PHP em sua configuração (por exemplo,
.phtml
,.php5
etc).
4) O uso do módulo de regravação de URL cria uma regra para responder com erro personalizado em vez de processar essa solicitação.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<clear />
<rule name="Disable PHP" stopProcessing="true">
<match url="^.*\.php$" />
<action type="CustomResponse" statusCode="404" statusReason="No PHP here" statusDescription="Sorry mate" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
5) Usando o módulo de regravação de URL , crie uma regra para redirecionar para sua própria página de erro para todas essas solicitações.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<clear />
<rule name="Show Our Error Page for PPHP files" stopProcessing="true">
<match url="^.*\.php$" />
<action type="Rewrite" url="/404.php" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
A regra acima redirecionará internamente (reescrever) essas solicitações para um arquivo 404.php
na pasta raiz do site (por exemplo, http://www.example.com/404.php
)
Use # 2 se possível - ele será executado antes da etapa de regravação de URL, o que será benéfico para um servidor muito ocupado.