【Webサーバー(IIS)】CookieにSecure属性を設定する
CookieにSecure属性がついていないという
脆弱性の指摘を受けたのでその対策
今回の環境はWebサーバーがIISで
APサーバーがtomcatという構成
tomcat側でもSecure属性の設定は
できるんだけど、サイトの構成上
httpとhttpsが混在している場合、
Cookieの情報を見にいったりしてると
うまく動かないことがあるので
アプリケーションの外側で動いていて
やりとりをオーバーラップしているような
Webサーバー側で設定してあげるのが
正解らしい
というわけで今回はIISへ設定
IISでの設定方法
設定するにはURL書き換えから設定するか
web.configの記載を修正する
GUIが売りのIISの場合、
たいがいのことはアイコンから
設定でき、その操作が
自動的にweb.configに記述されるので
ほとんどの操作はいちいちweb.configを
書き換える必要はないが敢えて
web.configと一言で言っても
IIS全体のマスター?configと
その下位に位置するサイトごとの
web.configが存在し、
通常はサイトごとのほうを編集する
サイト名を右クリックしてフォルダを開く
web.configが見当たらない場合は
なんでもいいので設定をすれば
自動的にweb.configが作成されるらしい
web.configを開いたら
以下の通り設定を記載する
<configuration> <system.webServer> <rewrite> <outboundRules> <rule name="cookie secure"> <match serverVariable="RESPONSE_SET_COOKIE" pattern=".*" ignoreCase="false" /> <action type="Rewrite" value="{R:0}; secure" /> </rule> </outboundRules> </configuration>
writeはURL書き換え
outboundRulesは出る側の通信のルール
"リクエストのあったすべてのファイルに
対するCookieの末尾にsecureをつけなさい"
という記述
前回の記事でも書いたとおり
セキュリティ上の脆弱性ということで
たびたび指摘される件だけど
これを設定することで完璧!というよりも
やらないよりやったほうがいいよね
くらいのもの
しかしながらセキュリティは高すぎるから
困るということはないものなので
設定しておくにこしたことはない