脆弱性診断結果への対策方法メモ
脆弱性診断で出る項目についての対策などを調べてみたメモ。
サーバー対応(ヘッダー変更)が必要
TLS暗号スイートの不備
対策:Apache/NginxのSSL設定の変更
まぁ、いらないやつは消しておけみたいな。
Cache-Controlヘッダの不備
対策:Cache-Controlレスポンスヘッダの値に「no-store」の値を追加
キャッシュオフが非推奨とは省エネではないな?強く「no-store, no-cache」
まぁ、確かにセッションキャッシュ関連で漏れる場合があるとも。
Content-Security-Policyヘッダの不備
対策:Content-Security-Policyレスポンスヘッダを追加する
影響が大きそう。Google Analitycsとかその他に影響でそう。作ってる人でないとちゃんと設定できない。
製品情報の表示(レスポンスヘッダ)
対策:サーバーのソフト情報を非表示にする。server, x-powered-by, via
server_tokens off;
だけでも製品名が残るのでダメっぽい。シグネチャーとかで推察するやつもあるからあんまり意味なくね?
こんなやつでヘッダー削除するのかな(nginx)
Referrer-Policyヘッダの不備
対策:Referrer-Policyヘッダーを追加する。
普通に「no-referrer」として消せばいいのか疑問。Formなどに影響でる可能性有り。
Strict-Transport-Securityヘッダの不備
対策:Strict-Transport-Securityヘッダー(HSTS)を追加する
HSTSですね。HTTP→HTTPSのリダイレクトでは不十分という事らしいです。
X-Content-Type-Optionsヘッダの不備
対策:X-Content-Type-Options nosniffを追加。
Content-Typeの推測をoffにする。メディアタイプをちゃんと設定しておく必要はあるが異なる事はあるのか?webpなどあまり想定していない画像フォーマットなどが適当に表示されていたのが表示されなくなるなどはありそう。MIMEスニッフィング例としてimage/jpg(.jpg)の中にJavascriptコードが混入していてtext/javascriptと自動変換されて実行されるなど。
と思ったら下記のような記述もあった。それは保証外じゃね?
MIMEスニッフィング機能は、一部の古いバージョンのブラウザ(Internet Explorer 9以前など)でのみ対応している機能。現在の最新バージョンの主要なブラウザでは機能しない。
X-Frame-Optionsヘッダの不備
対策:X-Frame-Optionsヘッダの追加(DENY、SAMEORIGIN、ALLOW-FROM)
サーバー側設定の参考(まとめ
私が悪いんじゃないです、。レン鯖が悪いんです....
フレームワークやコード側で対応が可能
Set-CookieヘッダのSecure属性の不備
対策:CookieのSecure属性を有効化
フレームワークのcookie送出部分での対応
サブリソース完全性の不備
対策:ブラウザーが取得するリソース (ファイル) のハッシュ値を base64 エンコードし、その値を <script> や <link> 要素の integrity 属性に指定
CDNの場合はサイトにあるものをコピペ。「Copy Script Tag」などを選択するとちゃんとintegrity付きで表示される。
<script src="https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.11.13/dayjs.min.js" integrity="sha512-FwNWaxyfy2XlEINoSnZh1JQ5TRRtGow0D6XcmAWmYCRgvqOUTnzCxPc9uF35u5ZEpirk1uhlPVA19tflhvnW1g==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
自前でやる場合
cat FILENAME.js | openssl dgst -sha384 -binary | openssl base64 -A
Discussion