×
サイバー攻撃について

使用するテンプレートエンジンによっては、テンプレート式からJavaScriptのオブジェクトや関数へ到達できる場合があります。

XSSとの関係

CSTIそのものは、テンプレート式の注入です。

最終的にブラウザーでJavaScript実行へ到達した場合、XSSとして扱われます。


Server-Side Template Injectionとの違い

Server-Side Template Injection、SSTIは、サーバー側テンプレートエンジンが攻撃者の式を評価する問題です。

CSTI
└─ ブラウザー側テンプレートで評価
   └─ XSSへ到達する場合がある

SSTI
└─ サーバー側テンプレートで評価
   └─ サーバー上のコード実行へ到達する場合がある

SSTIとXSSは別の脆弱性です。


通信経路や保存場所に関係するXSS

postMessage XSS

window.postMessage()で受信したデータを、検証せずにDOMへ入れるとDOM XSSになります。

危険な例です。

window.addEventListener("message", (event) => {
    document.querySelector("#message").innerHTML = event.data;
});

改善例です。