
作っていたサイトが危険だったらたいへん!
でも何をしたらいいの?

HTMLでできる主な対策を見ていこう
目次
リンクのセキュリティ対策
対応内容
別ウィンドウに飛ぶことができるtarget="_blank"
にrel="noopener noreferrer"
をつける
<a href="xxx" target="_blank" rel="noopener noreferrer">リンク名</a>
目的
遷移先のページが悪いサイトだった場合、window.opener.location = のように、元ページに対して悪用(フッシング詐欺やウイルスを流す)が可能になるので、以下のコードを記述します。
noopenner リンク先→リンク元に対する不正なJavaScript処理を防止する
noreferrer 参照元ページを取得でないようにする
参考サイト
<a>タグ target="_blank"のセキュリティ対策
https://zenn.dev/web_tips/articles/80eeb0cd261bb5
https://zenn.dev/web_tips/articles/80eeb0cd261bb5
外部ライブラリ読み込み時の integrity 属性の追加
対応内容
CDN経由のライブラリを読み込む際はSRI(Subresource Integrity)設定する
- ハッシュジェネレーターへCDNリンクを入力してコードを入力
https://www.srihash.org/例:
<script src="https://example.com/cdn/script.js" integrity="sha◯◯◯-xxx"></script>
- 生成したコードをHTMLのそれぞれ組み込みたい箇所へ埋め込む
目的
CDNの改ざんによるマルウェア感染防止。
注意点
値を照合して読み込むため、適切にバージョン管理されていないものはハッシュ値が変動することがあるそうです。
変動があった場合は読み込みにエラーが発生します。
基本的に大手では起こり得ないそうですが、新しいものなどあまり広まっていないものは注意が必要です。
参考サイト
サブリソース完全性
https://developer.mozilla.org/ja/docs/Web/Security/Subresource_Integrity
サブリソース完全性によるCDN改竄対策
https://www.shiftsecurity.jp/blog/20231012-1
https://developer.mozilla.org/ja/docs/Web/Security/Subresource_Integrity
サブリソース完全性によるCDN改竄対策
https://www.shiftsecurity.jp/blog/20231012-1
フォームの制御
input typeの適切な型を指定
対応内容
メールアドレス欄はinput type=”email”など。それぞれ適切な型を指定
目的
バリデーション漏れやXSSリスクの軽減
フォーム内に入力履歴を残さない対策
対応内容
inputタグの中にautocomplete="off"
を記述
<input type="text" autocomplete="off">
参考サイト
mdn <input>: HTML 入力要素
https://developer.mozilla.org/ja/docs/Web/HTML/Reference/Elements/input
https://developer.mozilla.org/ja/docs/Web/HTML/Reference/Elements/input
目的
フォーム内に入力履歴を残さない。自動入力の誤作動などの対策
注意点
Chromeでは効かないことが多々あるようです。その場合はJSで制御ができるようです。
参考サイト
Google Chromeのオートコンプリートを止める方法
https://blog.ni-connect.co.jp/articles/view/20230323-1
https://blog.ni-connect.co.jp/articles/view/20230323-1

フォームは個人情報も入れたありするから重要ってことだね

今回はHTMLでできるセキュリティ対策をまとめたよ
どれも実装しやすいから対策をしよう!