???????? alert.constructor??????????????????????????????????????
????(function(){}).constructor
?????????Function ?????????????
???????????з???
???????????????????????????????????????磺
?????????????innerHTML = ????
?????????????·?? = data:????
????????????·?? = javascript:????
????......
????????????????????? eval ??????????????????????????????????????????? eval??setTimeout/Interval ??????
???????????????
??????????????????????????????????須????????????????????н????????????????????????????????????д?????
????????????
?????????о??£?????????????????
???????
????<script src="..." />
???????
????<iframe src="...">
????<frame src="...">
?????????Flash??
????<embed src="...">
????<object data="...">
????<object><param name="moive|src" value="..."></object>
???????????????
????<applet codebase="...">
??????Щ????·??????????????????????
?????????????????????????????????????·??????Ч???????
????<base href="...">
????????????????????·?????????????????
??????????????????????????????飬?????????????????????????????????????? eval ??У?
????AJAX
?????????????????????????????????????????????????????? XMLHttpRequest::open ??????????????????????????????????????????????????????????????????????? XHR ??????? 400 ????
????WebSocket
????WebSocket ?? XHR ??????????????????????м???
????????????????????WebSocket ?????????????????????????????????????????????? constructor ?????????????????й???????

 

????var raw_class = window.WebSocket;
????window.WebSocket = function WebSocket(url?? arg) {
????alert('WebSocket ????' + url);
????var ins = new raw_class(url?? arg);
????// ?м?
????ins.constructor = WebSocket;
????return ins;
????};
????var ws = new WebSocket('ws://127.0.0.1:1000');

?????????????????????????????????????????????
????WebSocket.CONNECTING
????WebSocket.OPEN
????...
???????????軔????????????????
???????????
????HTML5 ???????????????????????????????????????????????????????????????????????棬??? XSS ???? postMessage ??????棬??? eval ??С?
??????????????????HTML5 ?????????????????????????????????????淢?????
?????????????????????????????????????????????????в?????????????????????????????????????????????????

 

// ??????????
(function() {
window.addEventListener('message'?? function(e) {
if (confirm('????????[' + e.origin + ']??????? ' + e.data + ' ????????')) {
e.stopImmediatePropagation();
}
}?? true);
})();
window.addEventListener('message'?? function(e) {
alert('???:' + e.data)
})
postMessage('hello'?? '*');
Run