カテゴリー
コンピューター

EC-CUBE で全ページ HTTPS にするのに mod_rewrite を使いました★YA★TTA★!

Apache の mod_rewrite を使用するので EC-CUBE でなくとも WordPress などのサイトでも SSL に統一することができる設定方法

eccube/html/.htaccess の末尾に次を追加します。

# HTTPS に統一
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
  1. RewriteEngine On → mod_rewrite を使えるようにする
  2. RewriteCond %{HTTPS} off → 条件式に相当。HTTPS がオフだったら次を実行
  3. RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] → 実行する内容。
    「^(.*)$」を「https://%{HTTP_HOST}%{REQUEST_URI}」に置き換える。
    ^ 行頭、. 任意の一文字、* 直前の文字の 0 回以上の繰り返し、$ 行末。
    [R,L] はリダイレクトした後、変換処理をここで終了する、という意味らしい。。。

ドキュメントは次です。日本語ですけれども(ヤッター)、Apache 1.3 のドキュメントと古いです。新しいバージョンのものももちろんございますけれども、英語でニュービーには辛いですの><。

そもそもなぜ HTTPS に統一しようと思ったかと申しますと、、、

cookie のセキュア属性を有効にして、セキュリティを高めたかったからです。設定方法は非常にカンタでございまして、php.ini で次の項目を下記のように有効にするだけですわ。

session.cookie_secure = 1

これにより、脆弱性対策がなされるのですけれども、どのような脆弱性、対策であるかは上記リンクの PDF よりご確認ください。無料でよいのですの!?と言いたくなるほど充実した、すくなくともわたくしには、そして信頼の置ける情報が掲載されています。わたくしたちのようのなテキトーなブログよりもよっぽど有益ですわ♪

さた、P 19 にあります、1.4 セッション管理の不備の章の、4-(iii) HTTPS通信で利用するCookieにはsecure属性を加える。これを施したかったのですの。この解決方法の中身を引用いたします。

ウェブサイトが発行する Cookie には、secure 属性という設定項目があり、これが設定された Cookie は HTTPS 通信のみで利用されます。Cookie に secure 属性がない場合、HTTPS 通信で発行した Cookie は、経路が暗号化されていない HTTP 通信でも利用されるため、この HTTP 通信の盗聴により Cookie 情報を不正に取得されてしまう可能性があります。HTTPS 通信で利用する Cookie には secure 属性を必ず加えてください。かつ、HTTP 通信で Cookie を利用する場合は、HTTPS で発行する Cookie とは別のものを発行してください。

引用部分の最終部分に注目ですわ!EC-CUBE のデフォルトのテンプレートのままですと、HTTP とHTTPS  のページが混在いたします。すると 2 種類の Cookie を使用しなければならない、ということだと思うのですけれども、これが、わたくし、意味不明ですの><。

  • HTTPS ページ → HTTP ページやその逆のページ移動の場合に、一旦 Cookie を削除して、新しく Cookie を作る。

こういうことでしょうか?ですけれども、、、作りなおしたところで漏れては困る情報を作りなおしたとしたら、HTTP ページを巡回している間に盗聴されるケースを考えますと意味ないですの。。。

おそらくわたくしの理解がたりないのでしょうけれども、、、><。

そのようなわけで、エイヤと EC-CUBE の全ページを問答無用で HTTPS 化したのでした。

諦めるのはまだ早い♪この本で勉強すればきっと!

『体系的に学ぶ 安全なWebアプリケーションの作り方』著者名:徳丸 浩、こちらの P 209、4.8.2 クッキーのセキュア属性不備、をマスターすれば先ほど理解不能であった部分がわかり、対策もできるようになる!と存じます。

この本のこの章の素晴らしいところは、Cookie のセキュア属性を付けられないウェブアプリケーションがあることを説明したうえで、対策方法をしっかりと解説用ソース付きで示していることです。

最初が電子書籍の PDF 版、次がアマゾン版の Kindle と物理書籍です。

おわりに

前回、EC-CUBE 本体の設定で HTTPS へ統一することはできませんでした。テンプレートで設定した項目があまり使われていなかったためです。

ですのでこのたびはどんなウェブサイトでもウェブページでも関係ない、Apache で制御することにいたしました。以前投稿した次のページで最後にオマケで紹介した方法と同じ考え方です。

Apache の mod_rewrite によるルーティングは便利ですの。でも複雑で難しく、まだわたくしたちには難しいかしら><。

でも勉強する楽しみがありますわね♪

参考になりましたページを最後のご紹介いたします。大変勉強になりました。愛理がとう存じます!!!

以上です。

「EC-CUBE で全ページ HTTPS にするのに mod_rewrite を使いました★YA★TTA★!」への1件の返信

コメントを残す