рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдореЗрдВ рддреГрддреАрдп-рдкрдХреНрд╖ рдХреЛрдб рдЪрд▓рд╛рдПрдБ

рдЬреИрд╕рд╛ рдХрд┐ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд▓реЗрдЦ рдмрддрд╛рддрд╛ рд╣реИ, рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рд╣реИред рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдХреНрд╕рд░ рдЕрдирдЬрд╛рдиреЗ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдЬреНрдЮрд╛рдд рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдЕрдиреБрдкрдпреЛрдЧреА рдХреЛрдб, рдФрд░ рд╡рд╛рдпрд░рд╕ рдХреЛ рдЪрд▓рд╛рдиреЗ рдФрд░ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднреАред

рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдХрд╛рд░реНрдп рд╣реИ: рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ (рд╡рд┐рдЬреЗрдЯреНрд╕, рдРрдб-рдСрди, рдкреНрд▓рдЧрдЗрдиреНрд╕)ред рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХрд╕реНрдЯрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреБрдЫ рднреА рдЧрд▓рдд рди рдХрд░реЗрдВ (рдХреБрдХреАрдЬрд╝ рдЪреЛрд░реА рдХрд░рдирд╛ рдХрдо рд╕реЗ рдХрдо рд╡реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред

рд▓реЗрдЦ рдЙрди рд╣рдорд▓реЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдЧрд╛ рдЬреЛ рд╕рд╛рдЗрдмрд░ рдЕрдкрд░рд╛рдзреА рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдХреЛрдб рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рди рдФрд░ рддрд░реАрдХреЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдЗрдП рдЙрди рд╣рдорд▓реЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдореЗрдВ рд░реЛрдХрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╣рдорд▓реЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░


рдЗрд╕рдХреЗ рдмрд╛рдж рдЙрджрд╛рд╣рд░рдгреЛрдВ (рдореВрд▓ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдВрдХ) рдХреЗ рд╕рд╛рде "рд╣рдорд▓рд╛ рд╡реИрдХреНрдЯрд░" рдХрд╛ рдПрдХ рдкреВрд░рд╛ рдЧреБрдЪреНрдЫрд╛ рдЖрддрд╛ рд╣реИ, рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдХреНрд╖рд┐рддрд┐рдЬ рдХреЛ рд╡реНрдпрд╛рдкрдХ рдмрдирд╛рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдкреЛрд╕реНрдЯ рдХреЗ рдЕрдВрдд рддрдХ рд╕реНрдХреНрд░реЙрд▓ рдХрд░реЗрдВред рд╣рдорд▓реЗ рдХреНрд░реЙрд╕-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдирд╣реАрдВ рд╣реИрдВред

GlobalObjectPoisoning - рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЬрд╣рд░
Array.prototype[4] = 'four'; var a1 = []; alert('a1 has length ' + a1.length + ' but element 4 is ' + a1[4]); var a2 = new Array(5); alert('a2 has length ' + a2.length + ' and its element 4 is also ' + a2[4]); 

EvalArbiteathCodeExecution - eval рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рддреГрддреАрдп-рдкрдХреНрд╖ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ
 eval('alert("your cookie is " + document.cookie)'); (new Function('alert("your cookie is " + document.cookie)'))(); 

ArgumentsMaskedByVar - рдУрдкреЗрд░рд╛ рдореЗрдВ var рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдЪреНрдЫрдиреНрди рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХреЛрдВ рдХреА рд╕рд░рдгреА
 (function (a, b, c) { var arguments = [1, 1, 1]; alert('arguments[0] === ' + arguments[0] + ', a=' + a); arguments[0] = 2; alert('arguments[0] === ' + arguments[0] + ', a=' + a); })(0, 0, 0); 

CrossScopeParameterModification - рддрд░реНрдХ рд╕рд░рдгреА рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
 (function (a) { arguments[0] = 1; alert('a=' + a); })(0);> 

рддрд░реНрдХрд╡рд┐рд╖рдпрдХ рдкреНрд░рд╕реНрддрд╛рд╡рдХ - рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рдмрд╛рд╣рд░реА рдХрд╛рд░реНрдп рдХреЗ рддрд░реНрдХреЛрдВ рдХреЛ рдЦреАрдВрдЪрдирд╛ рд╕рдВрднрд╡ рд╣реИ
 function untrusted() { alert('got function ' + untrusted.caller + ' : ' + arguments.callee.caller.arguments[0]); } (function trusted() { untrusted(); })(4); 

FunctionMemberCrossScopeParameterAccess - рдЖрдВрддрд░рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдмрд╛рд╣рд░реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рддрд░реНрдХреЛрдВ рдХреЛ рдмрджрд▓рдирд╛ рд╕рдВрднрд╡ рд╣реИ
 function f(a) { g(); alert(a); } function g() { f.arguments[0] = 1; } f(0) 

TypeofInconsistent - webkits рдореЗрдВ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдкреЛ рдмрдЧ
 'function' === (typeof /./) 'function' === (typeof alert) 

рджреБрд░реНрдЧрдо LocalVariables - рдкрдХрдбрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (localVarName)
 (function () { var arguments; alert('arguments === undefined: ' + (arguments === undefined)); })(); (function () { var e; try { throw 1; } catch (e) { } alert('arguments === undefined: ' + (arguments === undefined)); })(); (function () { var e = 1; try { throw 2; } catch (e) { } alert('e === 1 : ' + e); })(); 

рдХреИрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХреЛ рдмрджрд▓рдирд╛ рд╕рдВрднрд╡ рд╣реИ
 var a = 0; (function () { try { throw 1; } catch (a) { } })(); alert(a); // alerts 1 on old FF (function () { var a = 0; try { throw 1; } catch (a) { } alert(a); // alerts 1 on IE 6 and 7 (IE 8 not tested) })(); 

GlobalScopeViaThis - рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реИрд╢реНрд╡рд┐рдХ рдЧреБрдВрдЬрд╛рдЗрд╢ рддрдХ рдкрд╣реБрдВрдЪрдирд╛ рд╕рдВрднрд╡ рд╣реИ
 (function () { alert('your cookie is ' + this.document.cookie); })(); setTimeout( function () { alert('your cookie is ' + this.document.cookie); }, 0) 

DeleteUnmasksGlobals - рдЫрд┐рдкреЗ рд╣реБрдП рд╡реИрд╢реНрд╡рд┐рдХ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рдбрд┐рд▓реАрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЦреЛрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
  with ({ document: null }) { delete document; alert('your cookie is ' + document.cookie); } 

рдлрдВрдХреНрд╢рдирдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ - рдлрдВрдХреНрд╢рди рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ 'рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░' рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реБрд▓рдн рд╣реИ
 ((function () {}).constructor)( 'alert("document.cookie = " + document.cookie)')() 

ObjectEvalArbiteathCodeExecution - Object.eval рдЖрдкрдХреЛ Firefox рдореЗрдВ рдХрд┐рд╕реА рднреА рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
 ({}).eval('alert("Your cookie is " + document.cookie)') 

ObjectWatch - Object.watch рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдмрд╛рд╣рд░реА рдбреЗрдЯрд╛ рдХреЛ рдЬрд╣рд░ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
 function untrusted(o) { o.watch( 'private_', function (obj, oldval, newval) { alert('untrusted got oldval ' + oldval + ' and newval ' + newval); return 'poisoned'; // substitute a bogus value }); } // Trusted code var o = { private_: 'old' }; untrusted(o); o.private_ = 'new'; alert('private is now ' + o.private_); 

ObjectToSourceLeaksPrivates - Object.toSource рдФрд░ uneval рдЖрдкрдХреЛ рдирд┐рдЬреА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ
 // Untrusted code function untrusted(o) { // untrusted need not attempt to access private_ directly var privateValue = o.toSource().match(/private_:\s*(\d+)/)[1] * 1; alert('private value is ' + privateValue); } var o = { private_: 4 } untrusted(o); 

FunctionMethodsLeakGlobalScope - Function.call рдпрд╛ Function.apply рдЗрд╕ рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдИ рд╡реИрд╢реНрд╡рд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдЦреЛрд▓ рд╕рдХрддрд╛ рд╣реИред
 (function () { alert(this === window); }).call(null); (function () { alert(this === window); }).call(undefined); alert(window === ([]).sort.call()); alert(window === ([]).reverse.call()); // Firefox2 only. [https://bugzilla.mozilla.org/show_bug.cgi?id=406337] var o = { valueOf: function () { return null } }; (function () { alert(this === window); }).call(o); 

ConditionalCompilationComments - рд╕рд╢рд░реНрдд рд╕рдВрдХрд▓рди рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдХреЛ рдХреЛрдб рдЫрд┐рдкрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
 /*@cc_on @*/ /*@if (1) alert(document.cookie) @end @*/ 

StringObfuscationIsEasy - рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди
 (function () { var s = 'cons'; s += 'tructor'; (new ((function () {})[s])('alert("hello")'))(); })(); 

ParentCircumventsScoping - __parent__ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рднреА рджрд╛рдпрд░реЗ рд╕реЗ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ
 (function () { var alert = null; // boilerplate that masks global alert (function () { // untrusted code that can't access alert directly ({}).__parent__.alert('hello'); })(); })(); 

JsControlFormatChars - RTL рдпрд╛ [: Cf:] рдЙрд▓рдЯрд╛ рдЪрд░рд┐рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдХреЛрдб рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
 <html> <body onload=" /&#x200D;/.test(''); /* alert('hi'); // */ "> </body> </html> 

рдЕрд╕рдВрдЧрдд рд░реВрдк рд╕реЗред рдЕрдкрд╡рд╛рджрд┐рдд рд╢рдмреНрдж- рд╕рдВрджрд░реНрдн - рдЕрд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╢рдмреНрдж: рдХреЙрдиреНрд╕реНрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк
 this['const'] = 0; const alert = f(); // looks like an assignment to self. function f() { return alert; } // looks like a reference to an undefined local. alert('hello world'); 

ErrorExposeParameterValues - рддреНрд░реБрдЯрд┐ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдмрд╛рд╣рд░реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджрд┐рдП рдЧрдП рдорд╛рдкрджрдВрдбреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ
 function skroob(luggageCombination) { darkHelmet(); } function darkHelmet() { var combo = Number((new Error).stack.match(/skroob\((\d+)\)/)[1]); alert('Only an idiot would use that combination!: ' + combo); } skroob(1234); 

RegexpsLeakMatchGlo Worldwide - рд░реЗрдЧреБрд▓рд░ рдЕрдВрддрд┐рдо рд░реЗрдЧреБрд▓рд░ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдкрд░ рднреЗрдЬреЗ рдЧрдП рдЕрдВрддрд┐рдо рд▓рд╛рдЗрди рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ
 // Privileged code (function () { var queryString = document.location.search; // Assume it's "?password=1234" function params() { return queryString.split(/[&?]/g); } if (params()[0] === 'debug=on') { // ... } })(); // Unprivileged code without direct access to document.location (function () { alert(/.*/.exec()); })(); 

EvalBreaksClosureEncapsulation - рдХреЙрд▓рд┐рдВрдЧ evel ff рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЧреБрдВрдЬрд╛рдЗрд╢ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЛ рддреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ
 function counter(i) { return function () { return ++i; }; } var myCounter = counter(0); alert(myCounter()); // => 1 eval('i = 4', myCounter); alert(myCounter()); // => 5 on Firefox 2, 2 on other browsers 

PostIncrementAndDecrementCanReturnNonNumber - рдкреЛрд╕реНрдЯ - рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдФрд░ рдкреЛрд╕реНрдЯ- рдбрд┐рдХреНрд░реАрдореЗрдВрдЯ рдирдВрдмрд░ рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рд╣реИ - рдлрд╝рдВрдХреНрд╢рди рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛
  (function() { var c = 'constructor'; var F = (function(){})[c++]; // Function constructor F('alert("toast")')(); })(); 


HTML, css code.google.com/p/google-caja/wiki/AttackVectors рд╕реЗ рд╣рдорд▓реЛрдВ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рдЧреБрдЪреНрдЫрд╛

рдЗрди рд╕рднреА рд╣рдорд▓реЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╣рдореЗрдВ рдХреБрдЫ рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ рддрд╛рдХрд┐ рдкреНрд▓рдЧрдЗрди рд╕реНрд╡рд╛рдпрддреНрдд рд░реВрдк рд╕реЗ рдХрд╛рдо рди рдХрд░реЗред

рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдЬреЛ рд╣рдореЗрдВ рдкреНрд▓рдЧрдЗрди рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП


1. рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред
2. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдУрд░ рд╕реЗ рдХреБрдЫ рдХрд╛рд░реНрдп рдХрд░рдирд╛ред

рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рд╕реЗ рдЦреБрдж рдХреЛ рдЕрд▓рдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ рдФрд░ рдПрдХ рдЕрдЪреНрдЫреЗ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд╕рднреА рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рджреЗрдВ!

1. рд╕рдВрдпрдо


рдЫрд╡рд┐
рд╣рдо рдордзреНрдпрд╕реНрдереЛрдВ рдХреА рдПрдХ рдЯреАрдо рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХреЛрдб рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд╛рдХрд┐рдл рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред
рдиреБрдХрд╕рд╛рди: рдмреЗрд╣рдж рдорд╣рдВрдЧрд╛, рдФрд░ рдмреЗрд╣рдж рдЕрдХреНрд╖рдоред рдЕрдЪреНрдЫреЗ рдордзреНрдпрд╕реНрдереЛрдВ рдХреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рдореЙрдбрд░реЗрдЯрд░ рдФрд░ рдорд╛рдирд╡ рдХрд╛рд░рдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╣рдореЗрд╢рд╛ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддреА рд╣реИ, рдкреНрд▓рдЧрдЗрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЕрдкрдиреЗ рдЧрдВрджреЗ рдХрд╛рдо рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рд╣реИред
рдкреНрд▓рд╕рд╕: рдирд╣реАрдВ

2. iFrame рдореЗрдВ рд╕реИрдВрдбрдмреЙрдХреНрд╕


рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ jsfiddle рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
1. рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдмрд╛рдПрдВ рдбреЛрдореЗрди рдкрд░ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ
2. рдЪреЗрддрд╛рд╡рдиреА рддреНрд╡рд░рд┐рдд рдкреБрд╖реНрдЯрд┐ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордирд╛ рдХрд░реЗрдВ
3. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдкрдиреЗ рдлреНрд░реЗрдо рдореЗрдВ рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИ
4. рд╣рдо рдбрд╛рдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ (рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ)
рдиреБрдХрд╕рд╛рди: рдпрджрд┐ рд╡реЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдбреЛрдореЗрди рд╣реИрдВ, рддреЛ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЕрдиреНрдп рдкреНрд▓рдЧрдЗрдиреНрд╕ рдкрд░ рд╣рдорд▓рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╡рд┐рдирд┐рдордпред рд╕рддрд░реНрдХ рд╕рдВрдХреЗрдд рдкреБрд╖реНрдЯрд┐рдХрд░рдг рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рдХрд╛рд░реНрдп рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреЛрд╕реНрдЯрдореИрд╕реЗрдЬ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ
рд▓рд╛рдн: рд╕реИрдВрдбрдмреЙрдХреНрд╕рд┐рдВрдЧ рдХрд╛ рд╕рд░рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА: dean.edwards.name/weblog/2006/11/sandbox

3. рд╡реЗрдмрд╡рд░реНрдХ рдореЗрдВ рд╕реИрдВрдбрдмреЙрдХреНрд╕


рд╢реНрд░рдорд┐рдХ рдПрдХ рдорд╣рд╛рди рд╕реИрдВрдбрдмреЙрдХреНрд╕ рд╣реИрдВ, рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд╛рддрд╛рд╡рд░рдг рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рд╣реИрдВред
1. рд╣рдо рдкреЛрд╕реНрдЯрдореИрд╕реЗрдЬ (рдЕрд╕рд┐рдВрдХреНрд░реЛрдирд╕рд▓реА) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ
2. рд╣рдореЗрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрддреНрд╡реЛрдВ рдХрд╛ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛
3. рддрддреНрд╡ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдк рд╕реЗ рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдВрдЧреЗ
рдиреБрдХрд╕рд╛рди: рдкреНрд▓рдЧрдЗрди рдбреЗрд╡рд▓рдкрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдШрдЯрдХреЛрдВ рддрдХ рд╕реАрдорд┐рдд рд╣реИред рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╡рд┐рдирд┐рдордп рдФрд░ рдШрдЯрдирд╛рдУрдВред рд╕рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ WebWorkers рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рд▓рд╛рдн: рд╕реИрдВрдбрдмреЙрдХреНрд╕рд┐рдВрдЧ рдХрд╛ рд╕рд░рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдЙрджрд╛рд╣рд░рдг: github.com/eligrey/jsandbox

4. рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдХреЛрдб рдореЗрдВ рдХреЛрдб рдЕрдиреБрд╡рд╛рдж


рд╣рдо рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╣реИрдВ, рд╕рдВрднрд╛рд╡рд┐рдд рдЦрддрд░рдирд╛рдХ рд▓рд┐рдВрдХ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд (рд╕реАрдПрд╕рдПрд╕ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдЪрдЯреАрдПрдордПрд▓) рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛ рд╕рдВрднрд╛рд╡рд┐рдд рдЦрддрд░рдирд╛рдХ рд▓реЛрдЧреЛрдВ рдХреЛ рдЫреЛрдбрд╝рддреЗ рдирд╣реАрдВ рд╣реИрдВред
рдиреБрдХрд╕рд╛рди: рдХреЛрдИ рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ, рд╣рдореЗрдВ рдХреЛрдИ рд╕реНрд░реЛрдд рдХреЛрдб рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ
рдкреНрд▓рд╕рд╕: рд╣рд░ рдЬрдЧрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

4.1ред рдбрдЧрд▓рд╕ рдХреНрд░реЙрдХрдлреЛрд░реНрдб рдХреЗ рдЕрдбреНрд╕рдлреЗ

рдЫрд╡рд┐
ADsafe рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдПрдХ рд╕рдмрд╕реЗрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЕрддрд┐рдерд┐ рдХреЛрдб рдХреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИ, рдЬрдмрдХрд┐ рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдХреЛ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рджреВрд╖рд┐рдд рдпрд╛ рдЖрдХреНрд░рдордг рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред
ADSafe рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдРрд╕реЗ рдлреАрдЪрд░реНрд╕ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ рдЬреЛ рдпрд╛ рддреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ рдпрд╛ рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдШрдЯрдХреЛрдВ рдХреЛ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдЙрдирдХреА рд╕реВрдЪреА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░, рдпрд╣, рддрд░реНрдХ, рд╕рд╛рде, рддрд░реНрдХ, рдХреЗрд▓реА, рдХреЙрд▓рд░, рдирд┐рд░реНрдорд╛рддрд╛, eval, рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк, рд╕реНрдЯреИрдХ, рдЕрдирдЪреЗрдХ, valueOf, рдШрдбрд╝реА, рдирд╛рдо рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдпрд╛ _, рдСрдкрд░реЗрдЯрд░ [], рджрд┐рдирд╛рдВрдХ рдФрд░ рдЧрдгрд┐рдд рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ .random
рд╕реАрдорд╛рдПрдВ: рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ JSLint рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдХреЛрдб UTF-8 рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, html рдЖрдИрдбреА рдЕрджреНрд╡рд┐рддреАрдп рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП
рдиреБрдХрд╕рд╛рди: рдЕрддреНрдпрдзрд┐рдХ рдбреЗрд╡рд▓рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз
рдкреНрд▓рд╕рд╕: рд╣рд░ рдЬрдЧрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдВ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ: www.adsafe.org
рдЖрдк рдпрд╣рд╛рдВ adsafe рд╕реЗ рдЦреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВ: www.jslint.com (ADsafe рдзреНрд╡рдЬ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ)

4.2ред рдЧреВрдЧрд▓ рдХрд╛рдЬрд╛

рдЫрд╡рд┐
ADsafe рдХреЗ рд╡рд┐рдкрд░реАрдд, Google рдХрд╛рдЬрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИ ("рдХрд╛рдЬреЛрд▓рд░" рд╕рдВрдХрд▓рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) JavaScript, HTML, CSS рдХреЛрдб рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд (рдХрд╛рдЬреЛрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛) JavaScript, HTML, CSS рдХреЛрдбред ajoler рд╕рдВрднрд╛рд╡рд┐рдд рдЦрддрд░рдирд╛рдХ рдХреНрд╖рдгреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЕрд╕рдВрднрд╡ рд╣реИ, рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ - рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд╛рдЬреЛрд▓рд░ рдЖрднрд╛рд╕реА iframes рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЛрдо рд╡рд┐рдЦрдВрдбреВ рдХрд╛ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рдХрд░рддрд╛ рд╣реИред рдХрд╛рдЬрд╛ рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣рдорд▓реЛрдВ рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИ ред
рдиреБрдХрд╕рд╛рди: рд╣рдореЗрдВ рдПрдХ рд╕рдВрд╢реЛрдзрд┐рдд рдХреЛрдб рдорд┐рд▓рддрд╛ рд╣реИ
рд▓рд╛рдн: рд╣рд░ рдЬрдЧрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдбреЗрд╡рд▓рдкрд░ рдкрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд▓рдЧрд╛рддрд╛ рд╣реИ
рдХреЛрдб рдЕрдиреБрд╡рд╛рдж рдЙрджрд╛рд╣рд░рдг

рдХреЛ
 <script> alert(document.cookie); top.location = "http://www.thinkfu.com/evil.gif"; </script> 

рдХреЗ рдмрд╛рдж
 <script> { ___.loadModule({ 'instantiate': function (___, IMPORTS___) { return ___.prepareModule({ 'instantiate': function (___, IMPORTS___) { var dis___ = IMPORTS___; var moduleResult___, x0___, x1___; moduleResult___ = ___.NO_RESULT; try { { (IMPORTS___.alert_v___ ? IMPORTS___.alert : ___.ri(IMPORTS___, 'alert')).i___((x0___ = IMPORTS___.document_v___ ? IMPORTS___.document : ___.ri(IMPORTS___, 'document'), x0___.cookie_v___ ? x0___.cookie : x0___.v___('cookie'))); moduleResult___ = (x1___ = IMPORTS___.top_v___ ? IMPORTS___.top : ___.ri(IMPORTS___, 'top'), x1___.location_w___ === x1___ ? (x1___.location = 'http://www.thinkfu.com/evil.gif') : x1___.w___('location', 'http://www.thinkfu.com/evil.gif')); } } catch (ex___) { ___.getNewModuleHandler().handleUncaughtException(ex___, IMPORTS___.onerror_v___ ? IMPORTS___.onerror : ___.ri(IMPORTS___, 'onerror'), 'unknown', '2'); } return moduleResult___; }, 'cajolerName': 'com.google.caja', 'cajolerVersion': '4427', 'cajoledDate': 1302010087717 }).instantiate___(___, IMPORTS___), ___.prepareModule({ 'instantiate': function (___, IMPORTS___) { var dis___ = IMPORTS___; var moduleResult___; moduleResult___ = ___.NO_RESULT; { IMPORTS___.htmlEmitter___.signalLoaded(); } return moduleResult___; }, 'cajolerName': 'com.google.caja', 'cajolerVersion': '4427', 'cajoledDate': 1302010087733 }).instantiate___(___, IMPORTS___); }, 'cajolerName': 'com.google.caja', 'cajolerVersion': '4427', 'cajoledDate': 1302010087748 }); } </script> 

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрд▓рд░реНрдЯ "рдЕрд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧреИрдЬреЗрдЯ рдХрд╣рддрд╛ рд╣реИ: рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд" рдФрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реНрд░реЛрдд рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд╣рдорд▓реЛрдВ рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреГрд╖реНрда: code.google.com/p/google-caja
рдЖрдк Google Caja рдХреЛ рдпрд╣рд╛рдВ рдЯреНрд╡рд┐рд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ : caja.appspot.com

рдореИрдВ рд╕реБрдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рд╕реИрдВрдбрдмреЙрдХреНрд╕рд┐рдВрдЧ рдХреЗ рдХрд┐рди рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдХреЛрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ?

рдЖрд▓реЛрдЪрдирд╛, рд╕рд╡рд╛рд▓ рдФрд░ рд╕реБрдЭрд╛рд╡ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ!

PS рдореИрдВ рдХрд╛рдЯрд╛ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдорд╛рдБрдЧрддрд╛ рд╣реВрдБ - рдкрд╛рд░реНрд╕рд░ рдУрд╡рд░рд▓реЗрдкреНрдЯ

Source: https://habr.com/ru/post/In116898/


All Articles