Das Standard-NGINX-Format lautet wie folgt:
log_format combined '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
Welches ist ein bisschen schwer zu analysieren. Ich befürchte, dass die Leute "
entweder Anfragen, Verweise oder Benutzeragenten einbringen.
Ich habe darüber nachgedacht, stattdessen Trennzeichen zu verwenden und mein eigenes Format zu verwenden, das |P-,|
als Trennzeichen verwendet wird:
log_format parsable '$status |P-,| $time_iso8601 |P-,| $http_host
|P-,| $bytes_sent |P-,| $http_user_agent |P-,| $http_referer
|P-,| $request_time |P-,| $request';
Nichts hindert Benutzer jedoch daran, |P-,|
in ihre Anforderungen, Verweise oder Benutzeragenten einzugreifen.
Ich habe diesen Artikel über ASCII-getrennten Text gelesen: https://ronaldduncan.wordpress.com/2009/10/31/text-file-formats-ascii-delimited-text-not-csv-or-tab-delimited-text/
Ich denke, das könnte verwendet werden, um diese Probleme zu lösen, aber Benutzer könnten auch ASCII-Trennzeichen in ihre Daten einfügen.
Gibt es eine bewährte Methode zur Lösung dieses Problems?
"
ungültigen JSON generiert, aber möglicherweise beziehen sich die Änderungen, auf die @alexeyton verweist, auf die Behebung dieses ProblemsAntworten:
Es gibt kein Problem.
"
wird dargestellt als\x22
Anfrage:
Zeile im Protokoll:
AKTUALISIEREN
Aus dem Nginx-Änderungsprotokoll
Änderungen mit nginx 1.1.6 17. Oktober 2011
Änderungen mit nginx 0.7.0 19. Mai 2008
quelle
Denken Sie daran, dass einige Felder vom System generiert werden, damit sie sicher sind. Wenn Sie sicherstellen, dass sich diese Felder links und die hackbaren rechts befinden (http_user_agent sollte am Ende stehen und der http_referer davor sollte die Anforderung davor sein), können Sie sicherstellen, dass die meisten Daten korrekt sind, und indem Sie sie hinzufügen Wenn der Parser mehr Trennzeichen enthält (optional ganz rechts), als möglicherweise ohne Einfügen vorhanden sind, erkennt Ihr Parser Datensätze, die eingefügt wurden.
Außerdem habe ich wieder damit begonnen, ein Tabulatorzeichen als Trennzeichen zu verwenden, da ich glaube, dass jemand, der versucht, es in eine URL einzufügen, am Ende auf% 09 maskiert wird
quelle