株式会社ジェイピー・セキュアのSiteGuard Liteに関連する質問です。ご存知の方がいらっしゃいましたらご教示を願います。
質問の主旨
全ページ常時SSL化したWordPressサイトのセッションCookieは、php.iniにおいてSecure属性を指定するべきでしょうか?
【参考サイト】
- Cookieとセッションをちゃんと理解する – Qiita
- PHP: 実行時設定 – Manual(session.cookie_secure)
- PHP: 実行時設定 – Manual(session.cookie_httponly)
質問の補足
質問の補足としては以下の6点を追記いたします。
補足その1
さくらのVPSにインストールしたPHPの設定ファイル(php.ini)の中に、session.cookie_secureという項目があります。この項目は”On”にするべきでしょうか?それとも”Off”にするべきでしょうか?
補足その2
PHP逆引きレシピ 第2版 (PROGRAMMER’S RECiPE)のP.760を確認すると、session.cookie_secureは推奨値は”On”とされています。その詳細を説明する文章を引用します。
(session.cookie_secureは)セッションCookieにSecure属性を指定するかどうかです。全ページがSSLで保護されているサイトの場合はOnに指定します。
また同書のP.816ではセッションCookieのSecure属性の指定として、下記のようにも紹介されています。
すべてのページがHTTPS通信のサイトでも、暗号化されていないURLにユーザーが誘導された場合は、同じく、セッションCookieが暗号化されずに送信されることになります。
補足その3
; http://php.net/session.cookie-secure ;session.cookie_secure =
一方、自分が使用しているVPSにインストールしているPHP7のphp.iniを確認すると、session.cookie_secureはデフォルトの状態でコメントアウトされていて、”On”でも”Off”でもない状態です。
補足その4
PHP7のインストールは下記のブログ記事に掲載した通りです。
補足その5
SiteGuard Liteを導入する前提として、Let’s Encryptを使用しています。その設定については下記のブログに掲載した通りです。
補足その6
SiteGuard Liteは下記の3つの記事で掲載した通りに導入、設定しています。
- さくらのVPSでSiteGuard Lite(Web Application Firewall)をセットアップする方法(その1)
- さくらのVPSでSiteGuard Lite(Web Application Firewall)をセットアップする方法(その2)
- さくらのVPSでSiteGuard Lite(Web Application Firewall)をセットアップする方法(その3)
以上、よろしくお願い申し上げます。
質問の回答(2017年10月25日追記)
この投稿をした後にいろいろ調べたあと、セッションCookieはSecure属性をつけることにしました。具体的な作業内容は以下の通りです。
# vi /etc/php.ini session.cookie_secure = On session.cookie_httponly = On :wq # systemctl restart httpd
session.cookie_secureだけでなく、session.cookie_httponlyもOnにしている理由は、PHPの公式ドキュメントから引用します。
クッキーに対して、HTTP を通してのみアクセスできるようにします。 つまり、JavaScript のようなスクリプト言語からはアクセスできなくなるということです。 この設定を使用すると、XSS 攻撃によって ID を盗まれる危険性を減らせます (が、すべてのブラウザがこの設定をサポートしているというわけではありません)。