WordPressのセッション保持期間を変更する方法|セキュリティとUXを両立する設定術

Web運用(サイト構築)

WordPressを使っていると、ログイン中のセッションが「いつまで有効か」を調整したい場面があります。特にセキュリティ強化の観点から、一定時間操作がない場合に自動ログアウトさせたいというニーズは多いです。

本記事では、WordPressのセッションタイムアウトを変更する具体的な方法と、そのメリット・注意点をわかりやすく解説します。

セッションタイムアウトとは?なぜ設定を見直すべきか

セッションタイムアウトとは、ユーザーがログイン後に操作をしなかった場合、どのくらいの時間で自動的にログアウトさせるかを決定する仕組みです。

公共のパソコンや共有デバイスを使っているユーザーがそのまま放置してしまった場合、悪意のある第三者に乗っ取られるリスクがあります。セッションタイムアウトを適切に設定することで、次のようなメリットが得られます。

  • セキュリティの強化(不正アクセスの防止)
  • サーバーリソースの最適化
  • UXの改善と利便性のバランス

推奨されるセッションタイムアウトの時間

サイトの性質によって異なりますが、一般的には1~2時間(60~120分)程度が推奨されます。

  • 通常のブログや企業サイト:120分前後
  • 管理系・金融系などの高セキュリティサイト:15〜60分

セッション保持期間を変更するコードとその解説

以下のコードを functions.php に追加することで、セッションタイムアウトを調整できます。

remove_action('admin_enqueue_scripts', 'wp_auth_check_load');

function mytheme_auth_cookie_expiration( $expiration, $user_id, $remember ) {
    if ( $remember ) $expiration = 60 * 120; // 120分に設定
    return $expiration;
}

function mytheme_init() {
    if ($_SERVER["REQUEST_URI"] !== '/wp-admin/admin-ajax.php') {
        add_filter('auth_cookie_expiration', 'mytheme_auth_cookie_expiration', 10, 3);
        wp_set_auth_cookie(get_current_user_id(), true, is_ssl(), wp_get_session_token());
    }
}
add_action( 'init', 'mytheme_init' );
PHP

各部分の解説

  • remove_action(‘admin_enqueue_scripts’, ‘wp_auth_check_load’)
     →セッション延長のためのJavaScript読み込みを停止します。
  • mytheme_auth_cookie_expiration()
     →セッション(認証クッキー)の有効期限を変更します。
  • wp_set_auth_cookie()
     →カスタム期限をもとに認証クッキーを再発行します。
  • admin-ajax.php を除外することで、Ajax通信への影響を避けています。

注意点とベストプラクティス

  • 管理者以外のユーザーも対象になるため、一般ユーザーの利便性も考慮して設定を調整してください。
  • セキュリティを優先する場合は、短めに。利便性を重視する場合は長めに。
  • テスト環境で検証してから本番環境に適用しましょう。

まとめ|セキュリティと使いやすさのバランスを取る

WordPressのセッションタイムアウトを変更することで、セキュリティリスクを抑えつつ、ユーザー体験を損なわない設定が可能です。

あなたのサイトの性質に合わせた適切なタイムアウト時間を見つけ、運用に反映させてみましょう。

コメント

タイトルとURLをコピーしました