# Como corrigir o bloqueio de upload de arquivos entre o All In One Security e o WPForms no WordPress

O AIOS bloqueia upload no WPForms quando uma regra de firewall, o filtro de strings ou a proteção de arquivos PHP do All In One Security barra a requisicao POST do envio, fazendo o formulário retornar erro 403 ou falhar silenciosamente ao anexar o arquivo.

## O que é bloqueio de upload entre AIOS e WPForms?

O AIOS bloqueia upload no WPForms quando uma camada de proteção do All In One Security intercepta a requisicao que carrega o arquivo do formulário antes dela chegar ao WordPress. O WPForms usa um campo File Upload que envia o anexo por uma requisicao POST (no modo classico, AJAX para o admin-ajax.php; no modo moderno, um upload incremental antes do submit). Quando uma regra do AIOS considera essa requisicao suspeita, ela e barrada e o usuário ve um erro de envio ou um 403, mesmo com o resto do formulário funcionando.

A documentação oficial do All In One Security avisa que os recursos intermediarios e avancados podem quebrar o site se entrarem em conflito com outro plugin ou tema, e recomenda backup antes de ativa-los. As funções que mais causam esse bloqueio são o firewall avancado (regras 6G/6G blacklist), o filtro avancado de strings de caracteres, a proteção que impede execução e upload de arquivos PHP no diretório de uploads e o bloqueio de bad query strings, todas pensadas para barrar upload malicioso, mas que também podem barrar o anexo legitimo do WPForms.

## Como identificar

- O envio do formulário retorna a mensagem do WPForms 'Form has not been submitted, please see the errors below' sem detalhar a causa, e o anexo nunca chega.
- Ao anexar o arquivo aparece um erro HTTP, geralmente '403 Forbidden', vindo do servidor antes do WordPress processar o envio.
- Formulários sem campo de upload enviam normalmente, mas qualquer formulário com o campo File Upload do WPForms falha sempre.
- Arquivos PHP ou arquivos com extensão incomum são recusados enquanto imagens pequenas as vezes passam, indicando bloqueio por tipo e não por tamanho.
- No console do navegador o request do upload para admin-ajax.php ou para o endpoint do WPForms retorna 403 ou e cancelado pelo servidor.
- O log de eventos do AIOS, em WP Security, registra a requisicao do envio como bloqueada pelo firewall no mesmo horario da tentativa de upload.

**Antes de começar:** Antes de alterar regras de firewall, mexer no .htaccess ou desativar protecoes de upload, faça um backup completo do site (arquivos e banco de dados) e, de preferencia, teste em um ambiente de staging. A própria documentação do AIOS recomenda backup antes de ativar ou desativar recursos avancados, porque uma regra mal removida pode reabrir o site a upload malicioso.

## Como prevenir

- Ative os recursos avancados do AIOS de forma gradual e teste o envio de formulários com anexo logo após cada ativacao, conforme a própria doc do plugin recomenda.
- Mantenha no campo File Upload do WPForms apenas as extensões que você realmente aceita, reduzindo a chance de um tipo de arquivo cair em alguma regra do AIOS.
- Documente quais regras do firewall do AIOS precisaram de excecao para o WPForms, para não reativa-las por engano em uma futura revisao de segurança.
- Monitore o log de eventos do AIOS após cada atualização do AIOS ou do WPForms, já que mudancas no endpoint de upload podem voltar a esbarrar em uma regra existente.
- Prefira ajustar regras especificas a desligar o firewall inteiro, mantendo a proteção contra upload malicioso enquanto libera o anexo legitimo do formulário.

Erros relacionados

- [Como corrigir o conflito de spam entre All in One Security e WPForms](https://full.services/wp-fixer/corrigir-conflito-spam-aios-wpforms/)
- [Como corrigir as regras de firewall que não aplicam no All in One Security](https://full.services/wp-fixer/corrigir-firewall-regras-aios/)
- [Como corrigir o checkout bloqueado pelo firewall do All in One Security no WooCommerce](https://full.services/wp-fixer/corrigir-bloqueio-checkout-aios-woocommerce/)

## Causa

- As regras 6G blacklist do firewall do AIOS, no menu WP Security > Firewall, barram a query string ou o user agent da requisicao de upload do WPForms por considera-la padrão de ataque, devolvendo 403 ao anexo.
- A proteção 'Prevent execution of PHP files in the uploads directory' do AIOS grava regra no .htaccess da pasta wp-content/uploads e impede que o WPForms escreva ou sirva o arquivo enviado a partir desse diretório.
- O filtro avancado de strings de caracteres (Advanced character string filter) do firewall do AIOS interpreta o conteúdo binario do arquivo ou o nome com caracteres especiais como string maliciosa e bloqueia o POST inteiro.
- A regra 'Deny bad query strings' do AIOS rejeita o request de upload do WPForms quando o nome do arquivo ou os parametros do AJAX contem caracteres que a regra trata como suspeitos.
- O bloqueio de upload de arquivos PHP ou de extensões não permitidas pelo AIOS recusa anexos cujo tipo MIME não esta na lista liberada, mesmo quando o WPForms permite aquela extensão no campo File Upload.
- Uma regra de bloqueio por 404 ou por user agent do AIOS coloca em lockout o IP do visitante durante o envio, derrubando a requisicao de upload junto com o restante da navegação.

## Como resolver

1. Confirme que o bloqueio vem do AIOS: Desative temporariamente o All In One Security e tente o upload de novo no formulário. Se o anexo passar com o AIOS desativado, o bloqueio e dele e você isola a camada certa antes de mexer em qualquer regra.

```
Painel WP -> Plugins -> Plugins Instalados
Desative 'All-In-One Security (AIOS)' e refaca o envio do formulário
Reative o AIOS após confirmar que o upload volta a funcionar sem ele
```

2. Identifique a regra que bloqueou no log do AIOS: Abra o log de eventos e de IPs bloqueados do AIOS e procure a entrada no mesmo horario da tentativa de upload. O log mostra se quem barrou foi o firewall, o filtro de strings ou um lockout de IP, evitando desligar a proteção errada.

```
Painel WP -> WP Security -> Audit log / Logs
Procure a requisicao de envio do formulário marcada como bloqueada no horario do teste
Anote o tipo de regra citada (firewall, character string filter ou lockout de IP)
```

3. Ajuste o firewall do AIOS de básico para um nível que não barre o POST: No firewall do AIOS, desligue as regras 6G blacklist e o filtro avancado de strings de caracteres e mantenha apenas o nível de firewall básico. A própria doc do AIOS avisa que recursos avancados podem quebrar funcionalidades ao conflitar com outro plugin, entao reduza o nível antes de retestar.

```
Painel WP -> WP Security -> Firewall
Desative '6G Blacklist Firewall Rules' e 'Advanced character string filter'
Salve e tente o upload novamente no formulário
```

4. Reveja a proteção de PHP no diretório de uploads: Se o WPForms grava o anexo em wp-content/uploads, a proteção do AIOS que bloqueia PHP nesse diretório pode atrapalhar. Desligue essa proteção temporariamente para testar; se resolver, prefira uma regra mais específica que libere o caminho do WPForms em vez de manter o bloqueio total.

```
Painel WP -> WP Security -> Filesystem Security
Desative 'Prevent execution of PHP files in the uploads directory' e retire a regra do .htaccess de uploads se necessário
Refaca o upload e confirme se o anexo e gravado e servido
```

5. Libere as extensões de arquivo no campo do WPForms: Abra o campo File Upload do formulário no WPForms e confirme que as extensões que você quer receber estão na lista de permitidas. Casar a lista do WPForms com o que o AIOS deixa passar evita que o tipo MIME do anexo seja recusado por uma das duas camadas.

```
Painel WP -> WPForms -> abra o formulário -> clique no campo File Upload
Em Advanced, ajuste 'Allowed File Extensions' apenas para os tipos seguros que você aceita
Salve o formulário e teste o envio de um arquivo de cada extensão liberada
```

6. Reative as protecoes uma a uma: Com o upload funcionando, ligue de volta as regras do AIOS uma de cada vez e teste o envio após cada uma. Assim você mantem a maior proteção possível e identifica exatamente qual regra precisa de excecao para o WPForms.

```
Painel WP -> WP Security -> Firewall -> reative cada regra isoladamente
Após cada reativacao, envie o formulário com anexo e observe o log do AIOS
Deixe desativada somente a regra que volta a bloquear o upload
```


## Código

```apache
# .htaccess em wp-content/uploads/wpforms/
# Permite servir os anexos do WPForms sem reabrir execucao de PHP no resto da pasta.
# Use apenas se a protecao do AIOS estiver barrando o caminho do WPForms.

<IfModule mod_authz_core.c>
    # Apache 2.4: libera o acesso aos arquivos enviados pelo formulario
    Require all granted
</IfModule>
<IfModule !mod_authz_core.c>
    # Apache 2.2
    Order allow,deny
    Allow from all
</IfModule>

# Mantem o bloqueio de execucao de PHP, mesmo liberando o download dos anexos
<FilesMatch ".(php|php5|php7|phtml|pht)$">
    <IfModule mod_authz_core.c>
        Require all denied
    </IfModule>
    <IfModule !mod_authz_core.c>
        Order allow,deny
        Deny from all
    </IfModule>
</FilesMatch>
```

## Perguntas frequentes

### Por que o AIOS bloqueia o upload de arquivos no WPForms

Porque uma camada de proteção do All In One Security intercepta a requisicao POST que carrega o anexo. Em geral e o firewall avancado, o filtro de strings de caracteres ou a proteção de PHP no diretório de uploads que trata o envio como suspeito e devolve 403, mesmo o arquivo sendo legitimo.

### Como descobrir qual regra do AIOS barrou o envio do formulário

Abra o log de eventos e de IPs bloqueados em WP Security e procure a entrada no mesmo horario da tentativa de upload. O log indica se quem barrou foi o firewall, o filtro de strings ou um lockout de IP, evitando que você desligue a proteção errada.

### Preciso desligar o AIOS inteiro para o WPForms voltar a aceitar uploads

Não. Desative o AIOS apenas para confirmar a origem do bloqueio e, depois, reative-o e ajuste so a regra que barra o envio. Desligar o plugin todo deixa o site exposto sem necessidade quando o problema esta em uma única regra do firewall.

### A proteção de PHP no diretório de uploads do AIOS atrapalha o WPForms

Pode atrapalhar quando o WPForms grava o anexo em wp-content/uploads, porque o AIOS adiciona uma regra no .htaccess que bloqueia execução de PHP nessa pasta. Teste desligando essa proteção; se resolver, prefira uma regra específica para o caminho do WPForms em vez do bloqueio total.

### O erro 403 no upload do WPForms sempre vem do AIOS

Nem sempre, mas o AIOS e uma causa comum. Confirme desativando o plugin e refazendo o envio; se o upload passar sem ele, o 403 vinha de uma regra do AIOS. Se continuar bloqueado, investigue também o firewall do servidor ou da CDN.

### Quais regras do firewall do AIOS costumam barrar o WPForms

As regras 6G blacklist, o filtro avancado de strings de caracteres e o bloqueio de bad query strings são as que mais barram o envio, porque analisam a query string e o conteúdo do POST do upload. Mantenha o firewall em nível básico e reative essas regras uma a uma testando o formulário.

### Por que so os formulários com campo de upload falham

Porque apenas esses formulários enviam um arquivo na requisicao. As regras do AIOS que inspecionam o conteúdo do POST, o nome do arquivo ou o tipo MIME so disparam quando ha anexo, entao formulários de texto passam e os de upload são bloqueados.

### E seguro liberar o upload de arquivos depois de ajustar o AIOS

Sim, desde que você restrinja as extensões aceitas no campo File Upload do WPForms e reative as demais protecoes do AIOS. Libere apenas tipos seguros, evite permitir PHP e outros executaveis, e mantenha backup para reverter qualquer mudanca que reabra um risco.

**Fonte:** [All In One Security (AIOS) — Important note on intermediate and advanced features](https://teamupdraft.com/documentation/all-in-one-security/faqs/important-note-on-intermediate-and-advanced-features/)
