×
サイバー攻撃について
const ALLOWED_ORIGIN = "https://trusted.example";

window.addEventListener("message", (event) => {
    if (event.origin !== ALLOWED_ORIGIN) {
        return;
    }

    if (typeof event.data !== "string") {
        return;
    }

    document.querySelector("#message").textContent = event.data;
});

OWASPは、event.originを完全一致で確認し、受信データをコードとして評価しないよう求めています。


WebSocket XSS


WebSocketの受信データをinnerHTMLへ入れると、DOM XSSまたはStored Client XSSになります。

攻撃者がチャットへ投稿
        ↓
WebSocketサーバーが配信
        ↓
他の利用者が受信
        ↓
innerHTMLで描画
        ↓
XSS

WebSocket自体がXSSを起こすわけではありません。

受信データの描画方法が原因です。

安全な例です。