Timestamp Disclosure - Unix

「Timestamp Disclosure - Unix」というアラートは、ウェブアプリケーションがUnixタイムスタンプ(1970年1月1日からの秒数)を公開していることを示します。これは、攻撃者がタイムスタンプからアプリケーションの動作やセキュリティ情報を推測する手がかりになる可能性があります。

このアラートを解消するための手段をいくつか紹介します。

1. タイムスタンプの非表示化

公開されているタイムスタンプが不要なものであれば、ソースコードやテンプレートからタイムスタンプを削除します。

例: 投稿日時のフォーマット変更

WordPressのテンプレートファイルで投稿日時を表示する場合、Unixタイムスタンプを使用しない形式に変更します。

// 以前のコード
echo get_the_time('U');

// 修正後のコード
echo get_the_time('Y-m-d H:i:s');

2. タイムスタンプのフォーマットを変更

タイムスタンプが必要な場合は、より人間に読みやすい形式に変換します。

例: functions.phpでのカスタムフォーマット

functions.phpに以下のコードを追加して、タイムスタンプのフォーマットをカスタマイズします。

function convert_unix_timestamp($timestamp) {
    return date('Y-m-d H:i:s', $timestamp);
}
// 使用例
echo convert_unix_timestamp(get_the_time('U'));

3. ヘッダーからタイムスタンプを削除

HTTPレスポンスヘッダーにタイムスタンプが含まれている場合、それを削除または非表示にします。

例: Apacheの設定

Apacheの設定ファイル(httpd.conf.htaccess)で、特定のヘッダーを削除します。

<IfModule mod_headers.c>
    Header unset Last-Modified
    Header unset Date
</IfModule>

例: Nginxの設定

Nginxの設定ファイルで、特定のヘッダーを削除します。

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://your_upstream;
        proxy_hide_header Last-Modified;
        proxy_hide_header Date;
    }
}

4. プラグインの利用

特定のセキュリティ関連のプラグインを使用して、タイムスタンプの公開を制御することもできます。

  • WP Security Audit Log: 監査ログを詳細に管理し、不要なタイムスタンプの公開を防ぐ設定が可能です。

5. カスタムコードでの対応

WordPressのフックやフィルターを使用して、タイムスタンプの公開を制限するカスタムコードを追加します。

例: レスポンスヘッダーのカスタマイズ

function remove_unnecessary_headers() {
    header_remove('Last-Modified');
    header_remove('Date');
}
add_action('send_headers', 'remove_unnecessary_headers');

まとめ

Unixタイムスタンプの公開を防ぐことで、セキュリティリスクを軽減できます。テンプレートやソースコードでのタイムスタンプの非表示化、フォーマットの変更、HTTPレスポンスヘッダーの調整、セキュリティプラグインの利用など、複数の方法でアラートを解消することが可能です。これにより、OWASP ZAPで検出された「Timestamp Disclosure - Unix」アラートを解消し、サイトのセキュリティを向上させることができます。