textContentやDOM生成APIを使います。
代表例は次のとおりです。
Djangoのsafe
Djangoのmark_safe
{% autoescape off %}
ReactのdangerouslySetInnerHTML
Vueのv-html
AngularのbypassSecurityTrustAs*
LitのunsafeHTML
OWASPも、現代的なフレームワークには自動エスケープがある一方、安全機能を迂回するAPIがXSSの原因になると注意しています。
入力
↓
サニタイズ
↓
文字列置換・連結
↓
innerHTMLへ再投入
この流れでは、サニタイズ後に再び危険な構造が生まれる可能性があります。
JSON、WebSocket、APIは配送方法です。
受信した値をHTMLとして解釈すればXSSになります。
管理画面が表示するデータも、元をたどれば攻撃者が入力した値かもしれません。
管理者しか見ない画面ほど、Blind XSSの影響が大きくなります。
フロントエンドコードから、XSSにつながりやすいDOM APIを探します。