nginx loggin $ request_body produz codificação estranha

4

Eu tenho um servidor nginx que registra $ request_body em um arquivo. Quando eu posto o json no servidor, ele substitui aspas (") por \ x22.

Minha configuração é semelhante a esta

server {
    server_name myServer;
    listen 8180;
    log_format logMyServer '$request_body';
    location /myServer {
        access_log  /var/log/nginx/request_bodies.log logMyServer;
        proxy_pass http://127.0.0.1:8000/;

        break;
    }
}

Veja como estou gerando a solicitação:

curl -H "Content-Type: application/json" -X POST -d '{"some":{"foo":"bar"}}' localhost:8180/myServer/

Minhas perguntas são:

  • Que tipo de codificação é \ x [number]?
  • Existe uma maneira de configurar o registro para incluir aspas em vez de \ x22?
por Braithwaite Patrick Sean 14.03.2011 / 19:01

1 resposta

3

\ x [número] indica hexadecimal. Citações lançam analisadores de logs (principalmente aqueles que assumem que usarão o Formato de registro comum do apache, que envolve solicitações com citações em para manter o método, url e versão juntos). Parece que alguém reclamou sobre as aspas , que ( juntamente com a vulnerabilidade de injeção de escape terminal ) é o que levou à fuga. Parece que o patch nunca foi modificado para permitir que você o desative.

Você precisará analisá-los do seu jeito. Você pode substituir \ x por% para corresponder à codificação de URL ou apenas fazer a conversão hexadecimal.

    
por 14.03.2011 / 19:40

Tags