【WordPress】【セキュリティ対策】ログインセッションに適切なタイムアウト値を設定しよう
こんにちは、webエンジニアのゾノ( @ozonosho )です。
前回の記事に続いて、今回もWordPressデフォルト設定のままだとセキュリティ上宜しくないポイントについて書きます。
今回はログインセッションのタイムアウト設定についてです。
世の中には、他人のセッションを盗んで本人に成りすますセッションハイジャック攻撃なるものが存在します。そして、セッションのタイムアウト値を適切に設定していないと攻撃成功のリスクが高まってしまいます。
そのため、「ログインしたまま放置しているユーザーを適切な時間経過後に自動ログアウトさせましょう」という話になります。
セキュリティ的な観点でいえば、管理者がログイン放置している状態が一番危ういため、自動ログアウトさせる対象には管理者である自分も含みます。
WordPressのデフォルトのセッション保持期間は『2日』です。
ログインフォームにある「ログイン状態を保持する」というチェックボックスをチェックすると『14日間』になります。
それにたいして、一般的なwebサイトのセッション保持期間は『30分』程度です。
・・・WordPressやばいですよねw
通常操作で30分以上必要になるページがある場合(たとえば記事作成など)は30分に合わせる必要はありませんが、それでも2日もログイン状態を保持する必要はないと思います。
そんなわけでセッション保持期間は自サイトの特性にあわせて適切な値に設定することが好ましいです。
WordPressのセッションタイムアウト設定変更は、funcitons.phpに下記のようなコードを入れることで実現できます。
(例) remove_action('admin_enqueue_scripts', 'wp_auth_check_load'); function mytheme_auth_cookie_expiration( $expiration, $user_id, $remember ) { if ( $remember ) $expiration = 60 * 30; //30分 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' );
※「//30分」と記載した行の末尾にある30の数値を変更すると時間を変更できます
おわりに
以上、今回の記事ではWordPressのセッションタイムアウト設定について紹介させていただきました。
当サイトではWordPressのカスタマイズ依頼を請け負っています。実現したい機能・要望がある方はぜひ下記ページよりご相談ください。