エンジニア足立のコーディング日記

エンジニア足立のコーディング日記

ブログトップ >> 『PHP』の記事一覧 >> PHP クッキー(Cookie)にセキュア属性(secure属性)を付与

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

公開日:
この記事を読むのに掛る所要時間: 323

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

本日は、

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

 

で、

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

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

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

 

まず、

secure属性に関してですが、

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

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

 

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

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

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

 

なので、

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

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

とのことです。

 

ただし、

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

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

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

その為、

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

とのことでした。

 

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

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

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

 

対応方法は、

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

これで設定完了です。

 

次に、

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

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

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

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

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

 

この場合には、

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

そちらから、

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

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

とのことでした。

 

で、

こちらも、

とini_set()で設定すれば、

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

 

まとめると、

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

 

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

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

 

因みに、

session_set_cookie_params()関数

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

使い方は、

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

となるので、

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

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

 

あと、

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

session_get_cookie_params()関数

で確認が可能です。

公開日:更新日:)  投稿者:
このページのTOPへ戻る

著者情報

足立 拓也(あだち たくや)
1980年生まれ。
出身:兵庫県丹波市。
趣味:ボクシングジム通い。
特技:歴史の話しをすること。