×
サイバー攻撃について
socket.addEventListener("message", (event) => {
    const item = document.createElement("li");
    item.textContent = event.data;
    document.querySelector("#messages").appendChild(item);
});

APIレスポンス由来のXSS


JSON形式で受信したデータも、安全とは限りません。

危険な例です。

const response = await fetch("/api/profile/");
const profile = await response.json();

document.querySelector("#name").innerHTML = profile.display_name;

JSONは転送形式です。

JSONであることは、HTMLとして安全であることを意味しません。


localStorage・sessionStorage XSS


Web Storageへ保存された値を、後から危険なSinkへ渡すとXSSになります。

URLパラメーター
        ↓
localStorageへ保存
        ↓
別画面で読み込み
        ↓
innerHTMLへ代入