nginx. Negue dois pontos em qualquer lugar na URL

2

Eu preciso configurar o servidor nginx, que ele mostre 403 páginas se URL contiver dois pontos (..) em qualquer lugar na URL. Exemplo, se a URL for "site.sit / index.php? Log = .. / conf.php - o web-server deve detectar uma tentativa de ir para o diretório acima e trazer 403-messege. Eu tentei configurar essa idéia no conf-arquivo nginx lá:

location \.\. {
    deny all;
    }

Mas isso não funciona.

Diga-me, como faço para implementar este plano?

    
por Piknik 21.07.2016 / 15:09

1 resposta

5

A diretiva location só olha para o URI normalizado à esquerda do ? - por isso perderá qualquer sequência .. nos argumentos.

Se você precisar verificar o URI bruto que está sendo enviado ao servidor (incluindo argumentos), use uma expressão regular no $request_uri .

Por exemplo:

if ($request_uri ~ \.\.) { return 403; }

Consulte esta advertência sobre o uso da diretiva if .

    
por 21.07.2016 / 17:26

Tags