ユースケース
- Azure WebAppsでHTTPヘッダの設定をしたい時
- Azure WebAppsでデフォルトで設定されているHTTPヘッダ情報を削除したい時
前提
- Linux環境でApache等で制御したいような内容(HTTPヘッダの設定、Rewrite Rule、IP制限など)は、Azure WebAppsにおいては基本的にWeb.configで設定します
- ただし、Azure WebAppsはPaaSであるため制御できる範囲には限りがあります
- Azure WebAppsにおけるWeb.configは独自の設定も多いので、IISでのWeb.configの記述方法と同じ場合も異なる場合もあります
- (自分の知っている限り)公式ドキュメントでは情報が不足しているため、やりたいことと一致しない場合はOpenStackを見たり中の人に聞いてやりくりしています
書かないこと
- Web.configのデプロイ方法
HTTPヘッダの設定方法
- Web.configに以下のように記載するだけです。
Web.config
…
<system.webServer>
<httpProtocol>
<customHeaders>
<!-- ここに設定したいHTTPヘッダの情報を記載する -->
<!-- 追加 -->
<add name="${HTTPヘッダ名}" value="${Value}"/>
<!-- 削除 -->
<remove name="${HTTPヘッダ名}" />
</customHeaders>
</httpProtocol>
</system.webServer>
…
- 具体例1:「X-XSS-Protection:1; mode=block」を追加したい場合
Web.config
<add name="X-XSS-Protection" value="1; mode=block"/>
- 具体例2:「X-Powered-By:ASP.NET」を削除したい場合
Web.config
<remove name="X-Powered-By" />
Azure WebAppsでデフォルトで設定されているHTTPヘッダ情報を削除したい
WebAppsを構築したばかりの状態では以下の様なHTTPヘッダが返却されます。
X-Powered-ByやServerやX-AspNet-Version(上記には表示されていない)で返却されるHTTPヘッダの情報はなんとなく隠したいですよね。
この場合も同様に以下のようにWeb.configで設定すれば削除できます。
Web.config
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<!-- X-Powered-Byの削除 -->
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
<security>
<!-- Serverの削除 -->
<requestFiltering removeServerHeader="true" />
</security>
</system.webServer>
<system.web>
<!-- X-AspNet-Versionの削除 -->
<httpRuntime enableVersionHeader="false" />
</system.web>
</configuration>
X-Powered-Byはともかく、他の設定は少し書き方が違うので要注意です。
最後に
上記でも記載したWebサービスで必要になる設定はいろいろ試行錯誤したノウハウがあるので、少しずつTIPSとして残そうと思っています。お役に立ったら幸いです。