30代半ばの事務職員がITエンジニアになった話

おおよそタイトルのとおり、30代半ばにしてITエンジニアのタマゴになってしまった会社員の話

【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が存在し、
通常はサイトごとのほうを編集する
サイト名を右クリックしてフォルダを開く


f:id:ykk333:20190703230931p:plain
IIS フォルダを開く


f:id:ykk333:20190703223920p:plain
IIS フォルダを開く


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をつけなさい"
という記述


前回の記事でも書いたとおり
セキュリティ上の脆弱性ということで
たびたび指摘される件だけど
これを設定することで完璧!というよりも
やらないよりやったほうがいいよね
くらいのもの


しかしながらセキュリティは高すぎるから
困るということはないものなので
設定しておくにこしたことはない