Firefox で勝手にログアウトする問題が発生していました。Firefox のページ先読み順序の基準については以下のページが参考になりました。
FireFox先読み機能対策としてnextリンクを解除する : WordPressをインストールしてみた
単純に link rel=’next’ が指定している URL を先読みしているだけです。
WordPress のページなどでログアウトページを作っている場合は特定のページに以下のような感じで next にログアウトページが入ってしまいます。
1 | <link rel='next' title='ログアウト' href='http://example.com/logout' /> |
これを防止するには WordPress のフックでアクションを取消します。
1 | remove_action('wp_head', 'adjacent_posts_rel_link_wp_head'); |
そもそもある順序に従ってページを作ることなんてないわけですから next を設定しても単純にサーバーに負荷がかかるだけかもしれません。時と場合にもよりますが。そもそもログアウトページにアクセスするだけでログアウトされる設計自体もだめかも知れません。ログアウトを GET アクセスで実装するという概念そのものがダメなのかもしれない。
ログアウトは POST メソッドで実装する
体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践を読んでみたところ、この本の340ページにログアウトについて詳しく書かれていました。本を持っている人はぜひ読んでみてください。
要はページの先読み(GET アクセス)した程度でログアウトされるのがダメなので、POST アクセスでログアウトできるようにすると良いようです。検索ではこの情報を見つけることができない割に重要だと思ったので公開しておきます。現状は GET アクセスによる実装が多いそうです。
そういう時は「このリンクは先読みさせない」みたいな属性が HTML に付くのかもしれないですね。
コメント