Apache 資料一覧

Apacheのログをデコードする方法

2014/4/22更新

対応バージョン: 2.4.7

過去のApacheのログはJVNDB-2003-000047のような脆弱性を持っていたが制御コードをエスケープすることでこの問題に対応した。

それと引き換えに日本語などの文字列がそのままでは読めない状態になったので、例えば以下のPerlのワンライナーで元の文字列に戻すことができる。

アクセスログ (URLエンコード)
% tail access_log
... /%E6%97%A5%E6%9C%AC%E8%AA%9E ...

% tail access_log | perl -ne 'use URI::Escape; print uri_unescape($_);'
... /日本語 ...
エラーログ (エスケープ)
% tail error_log
... /\xe6\x97\xa5\xe6\x9c\xac\xe8\xaa\x9e ...

% tail error_log | perl -ne 's/\\x(..)/pack("C",hex($1))/eg;print $_;'
... /日本語 ...