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. PHP(ピー・エイチ・ピー)

    PHP

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

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

  2. タイムゾーン(Time Zone)

    PHP

    PHPのタイムゾーン

    PHPでシステムを構築していたのですが、echo date("Y-…

  3. 学習

    PHP

    WEBプログラマーを目指すなら、まずはPHPを学ぶべき!

    WEB業界への転職を考えている方は、まずはPHPを勉強すべきで…

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

    PHP

    PHPExcel テンプレートを使用してエクセルを出力

    今回は、テンプレートを使用したエクセル出力の方法を紹介します。…

  5. サーバー設定

    PHP

    お名前.comのVPSサーバ(KVM)にPHPをインストール

    お名前.comのVPSサーバにPHPをインストールしてみました!!…

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

    PHP

    mb_send_mail()を使うと、機種依存文字が「?」に文字化け!!

    お問い合わせフォームにwindowsの機種依存文字である「﨑」を入力す…

最近の記事

  1. WordPressのセキュリティ対策(脆弱性対策)
  2. ドメイン失効
  3. SEO関連タグ
  4. SEO関連タグ
  5. レンタルサーバー(共用サーバー)
  6. システム開発用のアイキャッチ
  7. システム開発用のアイキャッチ
  8. ドメイン 利用制限
  9. WP:WordPress(ワードプレス)
  10. システム開発用のアイキャッチ
PAGE TOP