PHP

PHP

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

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

本日は、

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

 

で、

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

■セッション管理に使用するクッキー(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()関数

で確認が可能です。

関連記事

  1. PHP

    PHP

    PHPでWarningエラーが!!

    PHPでこんなエラーが↓PHP Warning:  PHP Sta…

  2. データベース

    PHP

    【phpPgAdmin】データ型に「integer」を指定

    phpPgAdminの管理画面から、データ型に「integer」を…

  3. PHP

    PHP

    ファイルの読み込みで文字化けが発生します!!

     今日は文字化けでハマりました。大量の住所データを…

  4. PHP

    PHP

    【CVE-2017-5340】PHP7 脆弱性の対応

    結構前の話になってしまうのですが、PHP7.0.xxとPHP7.1…

  5. PHP

    PHP

    PHP4では読み込めていたんですが。。。

     先日、急にあるプログラムが正常に動作しなくなったとの報告がありま…

  6. PHP

    PHP

    ucfirst()関数とucwords()関数

    たまたま、英単語の頭の文字だけ大文字に変えて文字列を出力するという…

最近の記事

  1. SSL(HTTPS通信)
  2. WordPress
  3. データベース
  4. データベース
  5. データベース
PAGE TOP