Security(セキュリティ)

PHP

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()関数

で確認が可能です。

WordPress短期学習プログラム

関連記事

  1. Security(セキュリティ)

    PHP

    PHP脆弱性対応 クリックジャッキング攻撃への対応

    セキュリティー対策には多くの対応が必要ですが、その対策の一つにクリ…

  2. PHP

    PHPで切り捨て、切り上げ、四捨五入

    プログラミングをしている時に、何らからの計算処理をすると小数点以下…

  3. PHP

    プレースホルダ(プリペアド・ステートメント)

    私が入社する前に外注先に組んで貰ったかなり古いプログラムになるのですが…

  4. PHP(ピー・エイチ・ピー)

    PHP

    【PHP】header()関数

    こちらの記事では、PHPのheader()関数についてまとめました…

  5. PHP

    PEARのCache_Liteを試してみた

    file_get_contents()を使ってRSSから新着情報を読み…

  6. 共用サーバ(レンタルサーバ)

    PHP

    さくらインターネット 共用サーバーでエラーログを出力

    さくらインターネットの共用サーバーを借りて頂いている業者さんからの…

最近の記事

  1. PHP(ピー・エイチ・ピー)
  2. PHP(ピー・エイチ・ピー)
  3. WP:WordPress(ワードプレス)
  4. WP:WordPress(ワードプレス)
  5. WP:WordPress(ワードプレス)
  6. Security(セキュリティ)
  7. WP:WordPress(ワードプレス)
  8. WP:WordPress(ワードプレス)
  9. WP:WordPress(ワードプレス)
  10. アフィリエイト
PAGE TOP