Security(セキュリティ)

PHP クッキー(Cookie)にセキュア属性(secure属性)を付与

セキュリティの専門家の方からの指摘で、

本日は、

以前組んだシステムに脆弱性対策を施しています。

 

で、

指摘された内容の一つに、

■セッション管理に使用するクッキー(Cookie)にセキュア属性(secure属性)を付けるようにしろ!!
■セッション管理に使用するクッキー(Cookie)のパスはちゃんと設定しろ!!

というものがありました。

 

まず、

secure属性に関してですが、

このsecure属性を付けてやることにより、

HTTPS通信時にのみクッキーを送信できるようになるとのことです。

 

どうしてsecure属性が必要かというと、

HTTP通信時にクッキーの情報を盗聴によりひっこ抜かれると、

そのクッキーの中に含まれている重要情報が漏洩してしまう可能性があります。

 

なので、

HTTPS通信時にのみクッキーを送信するようにして、

極力安全な通信のみを行いましょう!!

とのことです。

 

ただし、

HTTP通信とHTTPS通信が混在しているサイトの場合には、

当然HTTP通信からはクッキーを送信できなくなるので、

それにより不都合が生じる場合もあります。

その為、

サイト側の仕様を考慮して最終的に対応するかどうかを決めて!!

とのことでした。

 

今回チェックして貰ったシステムは常時SSL通信を設定しており、

HTTPでの通信は許可していないので、

当然対応しておくことにします。

 

対応方法は、

ini_set("session.cookie_secure", 1);

というコードを追記してやれば、

これで設定完了です。

 

次に、

クッキー(Cookie)のパス設定についての説明ですが、

今回指摘があったサイトのトップページURLは、

https://www.sample.com/rent/

というように本サイト(https://www.sample.com/)とは別に、

「rent」というディレクトリを設けてサイトの構築を行っています。

 

この場合には、

仮に本サイト(https://www.sample.com/)にクロスサイトスクリプティングの脆弱性が存在していた場合、

そちらから、

/rent/直下のクッキーデータも引っこ抜かれる危険性が生じるので、

きちんとクッキーのパスも指定しておくように!!

とのことでした。

 

で、

こちらも、

ini_set("session.cookie_path", "/rent/");

とini_set()で設定すれば、

Cookieの保存パスの指定は完了します。

 

まとめると、

<?php

ini_set("session.cookie_secure", 1);
ini_set("session.cookie_path", "/rent/");
session_start(); //セッション開始


?>

みたいなコードで今回指摘があった「Secure属性の追加」と「保存パスの設定」は完了です。

 

念の為にクッキーの確認も行って下さい。

以下の様になっていれば修正完了です。
PHP CookieにSecure属性を付与

 

因みに、

session_set_cookie_params()関数

を使っての設定も可能です。

使い方は、

session_set_cookie_params("クッキー有効期限", "クッキーの保存パス", "クッキーが有効なドメイン", "セキュアフラグ, "HTTP通信フラグ");

となるので、

今回のシステムであれば、

session_set_cookie_params(0, "/rent/", "sample.com", true, false);

とすればOKです。
※5番の引数「HTTP通信フラグ」を「true」にした場合、HTTP通信のみがクッキーにアクセス可能となります

 

あと、

上記のようなクッキーの設定情報を確認したい場合には、

session_get_cookie_params()関数

で確認が可能です。

この記事を書いている人
株式会社ディープ
名前足立拓也

メールアドレスadachi@deep-deep.jp

関連記事

最近の記事

  1. SEO対策とは
  2. SE(システムエンジニア)
  3. カメラ
  4. アクセス解析
  5. ファイアウォール
  6. 一眼レフカメラ
  7. システム開発用のアイキャッチ
  8. FTPサーバー
  9. システム開発用のアイキャッチ
  10. Warning
PAGE TOP