Limitar cabeçalhos de solicitação do Apache2.4

Limitar cabeçalhos de solicitação do Apache2.4

Estou tentando limitar os cabeçalhos de solicitação de um host virtual apenas para POST, HEADe GET. O que fiz até agora foi criar um .htaccesspara meu host virtual e digitar o seguinte:

<LimitExcept GET HEAD POST>
    Require valid-user
</LimitExcept>

O problema é que <LimitExcept>mostra um erro que diz not allowed here, então tentei usar <Limit>, mas resultou no mesmo erro. Também tentei movê-los para dentro do meu .confarquivo host virtual e ainda ocorreu um erro. O que não entendo é que nos documentos oficiais diz que é permitido lá e no meu servidor não é.

Responder1

Se você está tentando permitir apenas os métodos GET, POST e HEAD, isso deve funcionar perfeitamente:

<Directory "/path/to/documentroot">
    Require method GET POST HEAD
</Directory>

Você precisará colocar essa configuração no seu VirtualHost.

EDITAR: E para responder sua outra pergunta no comentário (como habilitar a autenticação por senha apenas para solicitações POST), isso pode ser conseguido com as seguintes diretivas (que você pode colocar em /path/to/your/directory/.htaccess):

<RequireAny>
     AuthUserFile /path/to/your/.htpasswd
     AuthName "Login"
     AuthType Basic
     Require method GET HEAD
     Require valid-user
</RequireAny>

Isso permitirá os métodos GET e HEAD, mas as solicitações POST acionam a autenticação.

Responder2

2.4 possui um módulo específico para isso, chamado mod_allowmethods, e o uso de Limit/LimitExcept é desencorajado em 2.4. Certifique-se de carregar o módulo e no host virtual apropriado adicione isto:

# documentroot dir in virtualhost
<Directory /path/to/dir>
     AllowMethods GET HEAD POST
     Require valid-user
</Directory>

Você também pode torná-lo global definindo-o anteriormente na configuração do servidor para tudo como descrevo abaixo.

***observe que isso está / no seu sistema de arquivos, portanto você deve negar o acesso aqui e permitir diretórios específicos como documentroot ou alias posteriormente, mas permitir que os métodos se propaguem mais abaixo, a menos que você os substitua mais tarde.

<Directory />
    Require all denied
    AllowMethods GET HEAD POST
</Directory>

informação relacionada