1 Insecure postMessage Handlers
window.postMessage is used for cross-origin communication between frames and windows. Missing origin validation and unsafe data handling create serious vulnerabilities.
Missing origin check:
// VULNERABLE: no origin validation
window.addEventListener("message", (event) => {
// Any window can send messages — including attackers!
const data = JSON.parse(event.data);
if (data.action === "setUserData") {
updateProfile(data.payload);
}
});Unsafe data handling with eval:
// VULNERABLE: executing received code
window.addEventListener("message", (event) => {
eval(event.data); // Arbitrary code execution from any origin!
});Attack scenario:
// Attacker's page
targetWindow.postMessage(
JSON.stringify({ action: "setUserData", payload: { email: "[email protected]" } }),
"*" // Sends to victim window regardless of origin
);