{"id":189210,"date":"2013-09-03T12:00:03","date_gmt":"2013-09-03T08:00:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=189210"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=189210","title":{"rendered":"<span class=\"post_title\">\u0412 \u043f\u043e\u0438\u0441\u043a\u0430\u0445 \u043b\u0430\u0437\u0435\u0435\u043a: \u0433\u0438\u0434 \u043f\u043e DOM Based XSS<\/span>"},"content":{"rendered":"<div class=\"content html_format\">   \t<img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/8e9\/fd5\/035\/8e9fd5035c6b4c7bda977188bef00b85.jpg\"\/><\/p>\n<p>  <i>XSS \u043d\u0435\u0441\u043f\u0440\u043e\u0441\u0442\u0430 \u0441\u0442\u043e\u0438\u0442 \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u043f\u0438\u0441\u043a\u0430 \u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0435\u0439 OWASP TOP 10. \u041b\u044e\u0431\u043e\u0439 \u0442\u043e\u043b\u043a\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u043e \u043d\u0438\u0445 \u0437\u043d\u0430\u0435\u0442. \u041d\u043e \u044d\u0442\u043e \u043d\u0435 \u043c\u0435\u0448\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0435: \u0432\u043e\u0441\u0435\u043c\u044c \u0438\u0437 \u0434\u0435\u0441\u044f\u0442\u0438 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438\u043c\u0435\u044e\u0442 XSS-\u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438. \u0410 \u0435\u0441\u043b\u0438 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u043b\u0438\u0447\u043d\u044b\u0439 \u043e\u043f\u044b\u0442 \u043f\u0435\u043d\u0442\u0435\u0441\u0442\u043e\u0432 \u0431\u0430\u043d\u043a\u043e\u0432, \u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u0430 \u00ab\u0434\u0435\u0441\u044f\u0442\u044c \u0438\u0437 \u0434\u0435\u0441\u044f\u0442\u0438\u00bb. \u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u0442\u0435\u043c\u0430 \u0438\u0437\u044a\u0435\u0437\u0436\u0435\u043d\u0430 \u043e\u0442 \u0438 \u0434\u043e, \u043e\u0434\u043d\u0430\u043a\u043e \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u0432\u0438\u0434 XSS, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e \u0440\u0430\u0437\u043d\u044b\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c \u043f\u043e\u0442\u0435\u0440\u044f\u043b\u0441\u044f. \u042d\u0442\u043e \u2014 DOM Based XSS. \u0418 \u043a\u0430\u043a \u0440\u0430\u0437 \u043e \u043d\u0435\u043c \u044f \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u0438\u0448\u0443.<\/i><\/p>\n<p>  <a name=\"habracut\"><\/a><\/p>\n<h4>\u0421\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0444\u043e\u043a\u0443\u0441\u0430<\/h4>\n<p>\u0410\u0442\u0430\u043a\u0438 \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043e\u0434\u043d\u0443 \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0432 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0432\u0435\u0431\u0430. XSS, Clickjacking, CSRF \u2014 \u0432\u0441\u0435 \u043e\u043d\u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0442\u0438\u0432 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u0430 \u043d\u0435 \u043f\u0440\u043e\u0442\u0438\u0432 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0441\u0438\u0441\u0442\u0435\u043c. \u0418 \u0435\u0441\u043b\u0438 \u0440\u0430\u043d\u044c\u0448\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u0438\u0447\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u0442 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e, \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0438\u0440\u0443\u044f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 (\u0438 \u043f\u0440\u043e\u043d\u0438\u043a\u0430\u044f \u0432\u043d\u0443\u0442\u0440\u044c \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0441\u0435\u0442\u0438), \u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0444\u043e\u043a\u0443\u0441 \u0445\u0430\u043a\u0435\u0440\u043e\u0432 \u0441\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0443\u044e \u0447\u0430\u0441\u0442\u044c. \u041f\u043e \u044d\u0442\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435 XSS\u2019\u043a\u0438, \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u043d\u043e\u0433\u0438\u0435 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u0441\u043e \u0441\u043a\u0435\u043f\u0441\u0438\u0441\u043e\u043c, \u043c\u043e\u0433\u0443\u0442 \u0441\u043e\u0441\u043b\u0443\u0436\u0438\u0442\u044c \u0445\u043e\u0440\u043e\u0448\u0443\u044e \u0441\u043b\u0443\u0436\u0431\u0443.<\/p>\n<h4>\u0422\u043e, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c<\/h4>\n<p>\u0412\u043d\u0430\u0447\u0430\u043b\u0435 \u0432\u043d\u0435\u0441\u0443 \u0434\u0432\u0430 \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u044f, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435\u0439.\u041f\u0435\u0440\u0432\u043e\u0435. \u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0446\u0435\u043b\u044c \u2014 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c \u0441 DOM Based XSS \u0442\u0435\u0445 \u043b\u044e\u0434\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043a\u0430 \u043e\u0431\u0445\u043e\u0434\u0438\u043b\u0438 \u044d\u0442\u043e\u0442 \u0442\u0438\u043f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u043e\u0439. \u0420\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u044f\u0445 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043c\u044b\u0441\u043b\u044f\u043c\u0438 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u042d\u0442\u043e \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u043e\u0434\u0430 \u043b\u0438\u043a\u0431\u0435\u0437. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u0432\u043e\u0438\u0445 \u043f\u043e\u0437\u043d\u0430\u043d\u0438\u0439 \u043c\u043e\u0436\u0435\u0448\u044c \u043f\u0435\u0440\u0435\u0441\u043a\u043e\u0447\u0438\u0442\u044c \u0442\u043e\u0442 \u0438\u043b\u0438 \u0438\u043d\u043e\u0439 \u043a\u0443\u0441\u043e\u043a.\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0442\u043e\u0440\u043e\u0435. \u0421 \u043f\u043e\u043b\u0433\u043e\u0434\u0430 \u043d\u0430\u0437\u0430\u0434 \u0412\u043b\u0430\u0434\u0438\u043c\u0438\u0440 \u041a\u043e\u0447\u0435\u0442\u043a\u043e\u0432 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043d\u0430 \u0425\u0430\u0431\u0440\u0435 \u043e\u0442\u043b\u0438\u0447\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e \u00ab<a href=\"http:\/\/goo.gl\/mY3zM\">\u0412\u0441\u044f \u043f\u0440\u0430\u0432\u0434\u0430 \u043e\u0431 XSS, \u0438\u043b\u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u043c\u0435\u0436\u0441\u0430\u0439\u0442\u043e\u0432\u043e\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c\u044e?<\/a>\u00bb. \u0412 \u043d\u0435\u0439 \u0448\u043b\u0430 \u0440\u0435\u0447\u044c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e XSS \u2014 \u044d\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0430\u0442\u0430\u043a\u0430, \u0430 \u043d\u0435 \u0442\u0438\u043f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438. \u041f\u043e\u043c\u043d\u0438\u0442\u0441\u044f, \u044d\u0442\u043e \u0440\u0430\u0437\u043e\u0436\u0433\u043b\u043e \u0440\u044f\u0434 \u043e\u0436\u0435\u0441\u0442\u043e\u0447\u0435\u043d\u043d\u044b\u0445 \u0441\u043f\u043e\u0440\u043e\u0432 \u0438 \u00ab\u043a\u0440\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u043f\u043e\u0445\u043e\u0434\u043e\u0432\u00bb, \u0447\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0432\u0435\u0441\u0435\u043b\u0438\u043b\u043e\u2026 \u041d\u043e \u044f \u0431\u0443\u0434\u0443 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c XSS \u0438 \u0430\u0442\u0430\u043a\u043e\u0439, \u0438 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c\u044e, \u0445\u043e\u0442\u044f \u0432\u0435\u0440\u043d\u043e \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u00abXSS \u2014 \u0442\u0438\u043f \u0430\u0442\u0430\u043a\u0438\u00bb. \u0422\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0449\u0435, \u0445\u043e\u0442\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u0441\u043c\u044b\u0441\u043b, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432\u0430\u0436\u043d\u043e.<\/p>\n<h4>\u0410\u0437\u0431\u0443\u043a\u0430 XSS<\/h4>\n<p>\u041d\u0435 \u043c\u043e\u0433\u0443 \u043d\u0435 \u043d\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u044b XSS\u2019\u043a\u0438. \u041d\u0435\u0442, \u043d\u0435 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043d\u0430\u0448 JavaScript-\u043a\u043e\u0434 \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u0414\u043b\u044f \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u0438 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u0442\u0430\u0449\u0438\u0442\u044c \u0435\u0433\u043e \u043d\u0430 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0434\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0439 \u043d\u0430\u043c \u0441\u0430\u0439\u0442 (http:\/\/evil.com).<\/p>\n<p>   \u0417\u0430\u0434\u0430\u0447\u0430 \u2014 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u041d\u0410\u0428 JavaScript-\u043a\u043e\u0434 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0430\u0442\u0430\u043a\u0443\u0435\u043c\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 gmail.com). \u0422\u043e \u0435\u0441\u0442\u044c \u0446\u0435\u043b\u044c \u2014 \u043e\u0431\u043e\u0439\u0442\u0438 Same Origin Policy, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0430 SOP \u0438 \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043d\u0430\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c.<\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435, \u0447\u0442\u043e XSS-\u043a\u0430 \u043d\u0430\u043c \u0434\u0430\u0441\u0442? \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0435\u0441\u0441\u0438\u043e\u043d\u043d\u044b\u0435 \u043a\u0443\u043a\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u041d\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0441\u0435, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 JavaScript: \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0438 \u0447\u0442\u043e \u043f\u043e\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440, \u044d\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043a\u0440\u0430\u0441\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0444\u043e\u0440\u043c\u043e\u0447\u0435\u043a\u2026 \u0412\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e XSS \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u0438 \u0443\u043c\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0441\u0442\u0430\u0442\u044c \u0441\u0438\u043b\u044c\u043d\u044b\u043c \u043e\u0440\u0443\u0436\u0438\u0435\u043c.\u0422\u0435\u043f\u0435\u0440\u044c \u043e \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438. \u041e\u0431\u044b\u0447\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u044f\u044e\u0442 \u00ab\u0445\u0440\u0430\u043d\u0438\u043c\u044b\u0435\u00bb (\u00abstored XSS\u00bb \u0438\u043b\u0438 \u00abType 2\u00bb) \u0438 \u00ab\u043e\u0442\u0440\u0430\u0436\u0435\u043d\u043d\u044b\u0435\u00bb (\u00abreflected XSS\u00bb \u0438\u043b\u0438 \u00abType 1\u00bb). \u0412 \u0445\u0440\u0430\u043d\u0438\u043c\u044b\u0445 \u043c\u044b \u043f\u043e\u0441\u044b\u043b\u0430\u0435\u043c XSS-\u043a\u0443, \u0438 \u043e\u043d\u0430 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u043c\u044b \u043d\u0430 \u044d\u0442\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. \u0412 \u00ab\u043e\u0442\u0440\u0430\u0436\u0435\u043d\u043d\u044b\u0445\u00bb \u043d\u0430\u0448\u0430 XSS-\u043a\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u0435\u043b\u0435 \u043e\u0442\u0432\u0435\u0442\u0430 \u043e\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u0441 \u0441\u0430\u043c\u043e\u0439 XSS.\u041d\u043e \u0437\u0434\u0435\u0441\u044c \u0447\u0435\u0433\u043e-\u0442\u043e \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442. \u0418 \u043a\u0430\u043a \u0442\u044b, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0434\u043e\u0433\u0430\u0434\u0430\u043b\u0441\u044f, \u044d\u0442\u043e \u2014 \u0442\u0435\u043c\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 DOM Based XSS (\u0438\u043b\u0438 Type 0). \u041f\u043e \u0440\u0430\u0437\u043d\u044b\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c (\u0447\u0430\u0441\u0442\u044c \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0434\u0430\u043b\u0435\u0435) \u0434\u0430\u043d\u043d\u044b\u0439 \u0432\u0438\u0434 XSS\u2019\u043e\u043a \u043c\u0430\u043b\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d, \u0434\u0430\u0436\u0435 \u0432 \u043d\u0430\u0448\u0438\u0445 \u043a\u0440\u0443\u0433\u0430\u0445\u2026 \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u044d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0441\u043a\u0430\u043d\u0435\u0440\u0430\u043c\u0438 \u0438\u0445 \u043d\u0435 \u0447\u0430\u0441\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u043a\u0430\u043d\u0438\u0442\u044c. \u041d\u043e \u0434\u0430\u0432\u0430\u0439 \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u0442\u0435\u043e\u0440\u0438\u0438.<\/p>\n<h4>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 DOM Based XSS?<\/h4>\n<p>\u0427\u0442\u043e\u0431\u044b \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u0435\u0436\u0434\u0435 \u043f\u043e\u043d\u044f\u0442\u044c, \u0430 \u0447\u0442\u043e \u0436\u0435 \u0442\u0430\u043a\u043e\u0435 DOM. \u041d\u0430\u0447\u043d\u0443 \u0438\u0437\u0434\u0430\u043b\u0435\u043a\u0430, \u0441 \u043b\u044e\u0431\u0438\u043c\u043e\u0439 \u0442\u0435\u043c\u044b \u2014 XML.\u0414\u043b\u044f XML \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0432\u0438\u0434\u0430 \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432. \u041f\u0435\u0440\u0432\u044b\u0439 \u2014 SAX (Simple API for XML) \u2014 \u044d\u0442\u043e \u0442\u0438\u043f \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432 \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u043d \u0447\u0438\u0442\u0430\u0435\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0442 \u0438\u0432\u0435\u043d\u0442\u044b. \u0422\u0440\u0435\u0431\u0443\u0435\u0442 \u043c\u0430\u043b\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u043d\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442. \u0412\u0442\u043e\u0440\u043e\u0439 \u2014 DOM (Document Object Model) \u2014 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0432\u0435\u0441\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0435\u0433\u043e \u0432 \u0432\u0438\u0434\u0435 \u0434\u0435\u0440\u0435\u0432\u0430. \u041d\u043e \u0447\u0442\u043e \u0435\u0449\u0435 \u0432\u0430\u0436\u043d\u0435\u0435 \u2014 \u043e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043c. \u041c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c, \u0443\u0434\u0430\u043b\u044f\u0442\u044c, \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u0441\u0430\u043c\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b (\u0443\u0437\u043b\u044b) \u0438 \u0438\u0445 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b. \u0410 \u043f\u0440\u0438 \u0447\u0435\u043c \u0437\u0434\u0435\u0441\u044c XML? \u041f\u0440\u0438 \u0442\u043e\u043c, \u0447\u0442\u043e \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u0440 HTML \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0432\u0438\u0434\u043e\u043c XML.\u0412 \u043e\u0431\u0449\u0435\u043c, \u0434\u0430\u043d\u043d\u0430\u044f \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430\u0445. \u0412\u0435\u0441\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 HTML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u043e\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 DOM-\u0434\u0435\u0440\u0435\u0432\u0430 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u0430 \u043a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043c\u0435\u043d\u044f\u0442\u044c \u0435\u0433\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 API \u0447\u0435\u0440\u0435\u0437 \u0442\u043e\u0442 \u0438\u043b\u0438 \u0438\u043d\u043e\u0439 \u044f\u0437\u044b\u043a. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c JavaScript.DOM \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0434\u0440\u0443\u0433 \u0432 \u0434\u0440\u0443\u0433\u0430 \u0432 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0443\u0437\u043b\u0430\u043c\u0438 (nodes). \u041a\u0430\u0436\u0434\u044b\u0439 \u0443\u0437\u0435\u043b \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 HTML-\u044d\u043b\u0435\u043c\u0435\u043d\u0442. \u041a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u2014 document.\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0445\u0440\u0430\u043d\u044f\u0449\u0435\u0435\u0441\u044f \u0432 \u0443\u0437\u043b\u0430\u0445, \u2014 \u0442\u0435\u043a\u0441\u0442. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435 \u0443 \u0443\u0437\u043b\u043e\u0432 \u0435\u0441\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b, \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f. \u041d\u0430 \u0440\u0438\u0441. 1 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 HTML-\u0444\u0430\u0439\u043b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0443 \u0441\u0435\u0431\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440. \u041f\u043e\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u0440\u043e DOM \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u0441 JavaScript \u0437\u0434\u0435\u0441\u044c: <a href=\"http:\/\/goo.gl\/suiZE\">goo.gl\/suiZE<\/a>.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/687\/e32\/36a\/687e3236a165488d308effa439183f60.png\"\/><br \/>  <strong>\u0420\u0438\u0441. 1.<\/strong> \u041f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0435\u0435 DOM-\u0434\u0435\u0440\u0435\u0432\u043e<\/p>\n<p>  \u0418, \u043a\u0430\u043a \u0443\u0436\u0435 \u0431\u044b\u043b\u043e \u0441\u043a\u0430\u0437\u0430\u043d\u043e, \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0437 JavaScript \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c DOM\u2019\u043e\u043c. \u0410 \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0430\u043c \u0434\u0430\u0435\u0442? \u0412 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u044d\u0442\u0438 \u043c\u0435\u0442\u043e\u0434\u044b (\u0435\u0441\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0443\u044e\u0442\u0441\u044f), \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c DOM \u0430\u0442\u0430\u043a\u0443\u0435\u043c\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0438 \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u0448\u0435\u0433\u043e JavaScript-\u043a\u043e\u0434\u0430 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0430\u0442\u0430\u043a\u0443\u0435\u043c\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430. \u0422\u043e \u0435\u0441\u0442\u044c \u0441\u0443\u0442\u044c \u2014 \u0442\u0430 \u0436\u0435 XSS. \u041f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"javascript\">&lt;body&gt; &lt;script&gt;document.write(location.href);&lt;\/script&gt; &lt;\/body&gt; <\/code><\/pre>\n<p>  \u041f\u043e\u043b\u0443\u0447\u0438\u0432 \u0442\u0430\u043a\u0443\u044e HTML\u2019\u043a\u0443, \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442 JavaScript-\u043a\u043e\u0434 \u0438 \u0434\u043e\u043f\u0438\u0448\u0435\u0442 \u0432 \u0442\u0435\u043b\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b (document.write) \u0441\u0442\u0440\u043e\u043a\u0443, \u0432\u0437\u044f\u0432 \u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 location.href. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0437\u0434\u0435\u0441\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0445\u0430\u043a\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 location.href \u0438 \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0439 JavaScript, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d. \u0422\u043e \u0435\u0441\u0442\u044c \u0435\u0441\u043b\u0438 \u044d\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u2014 test.html, \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u043a\u043e\u0434, \u043d\u0430\u043c \u043d\u0430\u0434\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0448\u0430 \u0436\u0435\u0440\u0442\u0432\u0430 \u043f\u0435\u0440\u0435\u0448\u043b\u0430 \u043f\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 URL (\u0441\u043c. \u0440\u0438\u0441. 2):<\/p>\n<pre><code class=\"javascript\">http:\/\/victim.com\/test.html#&lt;script&gt;alert(document.cookie);&lt;\/script&gt; <\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/b98\/4af\/950\/b984af950eed957e76f5ddafe96d506e.png\"\/><br \/>  <strong>\u0420\u0438\u0441. 2.<\/strong> DOM Based XSS<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/dc2\/6e2\/7cc\/dc26e27cc0193eb116c89bd1d79f4f5c.png\"\/><br \/>  <strong>\u0420\u0438\u0441. 2.1.<\/strong> \u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0430\u044f DOM Based XSS<\/p>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0432\u0430\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 Firefox \u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0435 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0414\u043b\u044f IE \u0438 Chrome \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435, \u0430 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0441\u043a\u0440\u0438\u043f\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0441\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430URL\u0435\u043d\u043a\u043e\u0436\u0435\u043d\u043e \u043f\u0435\u0440\u0435\u0434 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u043a\u043e\u0434\u0430 (\u0441\u0442\u0430\u043d\u0435\u0442 \u0432\u0438\u0434\u0430 \u00ab%3Cscript%3Ealert(1);%3C\/script%3E\u00bb).\u0417\u0430\u0442\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0447\u0438\u043c \u0434\u043b\u044f \u0432\u0441\u0435\u0445:<\/p>\n<pre><code class=\"javascript\">&lt;body&gt; &lt;script&gt; var l = location.hash.slice(1); eval(l);  &lt;\/script&gt; &lt;\/body&gt; <\/code><\/pre>\n<p>  \u042d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f:<\/p>\n<pre><code class=\"javascript\">http:\/\/victim.com\/test_eval.html#alert(document.cookie) <\/code><\/pre>\n<p>  \u0412\u0430\u0440\u0438\u0430\u043d\u0442 XSS \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439:<\/p>\n<pre><code class=\"javascript\">&lt;body&gt; &lt;p&gt;Hello my window name is: &lt;script&gt;document.write(window.name);&lt;\/script&gt; &lt;\/p&gt; &lt;\/body&gt; <\/code><\/pre>\n<p>  \u042d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f (\u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0436\u0435\u0440\u0442\u0432\u044b \u0441 \u043d\u0430\u0448\u0435\u0439, \u0447\u0442\u043e\u0431\u044b \u043c\u044b \u043c\u043e\u0433\u043b\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c window.name) \u2014 \u0440\u0438\u0441. 3:<\/p>\n<pre><code class=\"javascript\">&lt;script&gt;window.open(&quot;http:\/\/victim.com\/test_window.html&quot;, &quot;&lt;script&gt;alert('XSS')&lt;\/scr&quot; + &quot;ipt&gt;&quot;, &quot;&quot;, false);&lt;\/script&gt; <\/code><\/pre>\n<p>  \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0441\u0442\u0430\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043e\u0442\u043a\u0443\u0434\u0430 \u0440\u0430\u0441\u0442\u0443\u0442 \u043d\u043e\u0433\u0438 \u0434\u043b\u044f DOM XSS.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/9fa\/2d5\/d14\/9fa2d5d14d5fcbfd1792074998664704.png\"\/><br \/>  <strong>\u0420\u0438\u0441. 3.<\/strong> DOM Based XSS \u0438\u0437 window.name<\/p>\n<h4>\u0422\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u044f?<\/h4>\n<p>\u0421\u0430\u043c\u0430 \u0430\u0442\u0430\u043a\u0430, \u043a\u0430\u043a \u043d\u0438 \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u0440\u043e\u0434\u0430\u0442\u0430\u044f. \u041a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0432 2005 \u0433\u043e\u0434\u0443 \u0410\u043c\u0438\u0442 \u041a\u043b\u0435\u0439\u043d (Amit Klein, <a href=\"http:\/\/goo.gl\/OOb3U\">goo.gl\/OOb3U<\/a>) \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043e\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u0443\u044e \u0438\u0434\u0435\u044e \u043e \u0442\u0440\u0435\u0442\u044c\u0435\u043c \u0432\u0438\u0434\u0435 XSS\u2019\u043e\u043a, \u0445\u043e\u0442\u044f \u0441\u0430\u043c\u0438 DOM XSS \u0443\u0436\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u043b\u0438 \u0438 \u0434\u043e \u044d\u0442\u043e\u0433\u043e. \u0412 \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0431\u044b\u043b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043d\u0435\u043a\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u043e\u0433\u043e, \u043e\u0442\u043a\u0443\u0434\u0430 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0439\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f (\u0440\u0438\u0441. 4) \u0438 \u043a\u0430\u043a\u0438\u0435 \u043e\u043f\u0430\u0441\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a XSS&#8217;\u043a\u0435 (\u0440\u0438\u0441. 5). \u041d\u043e, \u043a\u0430\u043a \u043d\u0438 \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u0442\u0435\u043c\u0430 \u0431\u044b\u043b\u0430 \u0440\u0430\u0437\u0432\u0438\u0442\u0430 \u0438 \u043f\u0435\u0440\u0435\u043e\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u0430 \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0433\u043e\u0434\u044b \u2014 \u0432\u043e \u043c\u043d\u043e\u0433\u043e\u043c \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0442\u0430\u043a\u0438\u043c \u043b\u044e\u0434\u044f\u043c, \u043a\u0430\u043a \u0421\u0442\u0435\u0444\u0430\u043d\u043e \u0414\u0438 \u041f\u0430\u043e\u043b\u0430 (Stefano Di Paola) \u0438 \u041c\u0430\u0440\u0438\u043e \u0425\u0430\u0439\u0434\u0435\u0440\u0438\u0445 (Mario Heiderich).<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/594\/bfd\/b31\/594bfdb310e7937f4de982dd8c175f7a.png\"\/><br \/>  <strong>\u0420\u0438\u0441. 4.<\/strong> \u041e\u0442\u043a\u0443\u0434\u0430\u2026<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/4b3\/67d\/dd6\/4b367ddd60821270ae0b723d6798df76.png\"\/><br \/>  <strong>\u0420\u0438\u0441. 5.<\/strong> \u041a\u0443\u0434\u0430\u2026<\/p>\n<p>  \u0421\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u0432\u044b\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430\u0441\u044c \u043d\u0435\u043a\u0430\u044f \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u044f \u2014 \u0442\u043e, \u0447\u0442\u043e \u043c\u044b \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u043c \u0438 \u043c\u043e\u0436\u0435\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u00absource\u00bb, \u0430 \u0438\u0442\u043e\u0433 \u2014 \u0442\u043e \u043a\u0443\u0434\u0430 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442, \u043e\u043f\u0430\u0441\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0430\u0442\u0430\u043a\u0443 \u0438 \u043f\u0440\u043e\u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0448\u0443 XSS\u2019\u043a\u0443, \u2014 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u00absink\u00bb. \u0420\u0443\u0441\u0441\u043a\u0438\u0445 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u0432 \u0434\u0430\u0436\u0435 \u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0438\u0441\u043a\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0443.\u0418 \u0435\u0441\u043b\u0438 sink\u2019\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438\u0441\u044c (\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u043b\u0438\u0441\u044c), \u0442\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 source\u2019\u043e\u0432 \u0441\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0440\u043e\u0441\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u043d\u044f\u0435\u0442 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0430\u0442\u0430\u043a\u0438 (\u0435\u0435 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e), \u043d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435.\u0417\u0434\u0435\u0441\u044c \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0447\u0442\u043e \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0435\u0439 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e. \u0410 \u043f\u043e\u0442\u043e\u043c\u0443 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0437\u043d\u0430\u0447\u0438\u043c\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043f\u0440\u0438 \u043a\u043e\u043f\u0430\u043d\u0438\u0438 DOM XSS \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 domxsswiki (<a href=\"http:\/\/goo.gl\/yycvJ\">goo.gl\/yycvJ<\/a>), \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 source \u0438 sink, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0438 \u0438\u0445 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432.\u0422\u0430\u043a \u0432\u043e\u0442, \u043e \u043d\u043e\u0432\u043e\u0439 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0441\u043f\u0435\u0446\u044b \u0438\u0437 Aspect Security \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b\u0438 (\u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0442\u0440\u043e\u043b\u043b\u0438\u043d\u0433\u0430, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435) \u2014 \u0441\u043c. \u0440\u0438\u0441. 6. \u041a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u044d\u0442\u0430 \u0442\u043e\u0447\u043d\u0430 \u0438 \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u0435\u0442 \u0441\u0443\u0442\u044c DOM XSS. \u041d\u0435 \u0432\u0430\u0436\u043d\u043e, \u043e\u0442\u043a\u0443\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0442 \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u0430 (\u0438\u0437 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043e\u0442 \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u0441\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b) \u2014 \u0432\u0430\u0436\u043d\u043e, \u0447\u0442\u043e \u043e\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e, \u0447\u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u043d\u0438\u043a\u043d\u0435\u0439\u043c \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0433\u0434\u0435-\u0442\u043e \u0442\u0430\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f, \u2014 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b \u0434\u043b\u044f Stored XSS \u0435\u0441\u0442\u044c. \u041d\u043e \u0435\u0441\u043b\u0438 \u043d\u0430\u043c \u043f\u043e\u043c\u0435\u0448\u0430\u0435\u0442 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u2014 \u043c\u044b, \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0443\u0436\u0435 \u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c. \u0410 \u0435\u0441\u043b\u0438 \u043d\u0430\u0448 \u043d\u0438\u043a\u043d\u0435\u0439\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0433\u0434\u0435-\u0442\u043e \u0435\u0449\u0435, \u043d\u043e \u0443\u0436\u0435 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0433\u0434\u0435-\u0442\u043e \u0434\u043b\u044f \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 DOM\u2019\u0430? \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u0432\u0442\u043e\u0440\u0443\u044e \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u0434\u043b\u044f XSS\u2019\u043a\u0438 (\u0442\u0435\u043f\u0435\u0440\u044c \u0443\u0436\u0435 DOM XSS), \u0442\u0430\u043a \u043a\u0430\u043a, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043d\u0430\u043c \u0438 \u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0442\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u044b \u0431\u044b\u043b\u0438 \u0434\u043b\u044f Stored XSS, \u043d\u043e \u0431\u044b\u043b\u0438 \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u044b \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/684\/b31\/99c\/684b3199c1143b30f2360409212c7900.png\"\/><br \/>  <strong>\u0420\u0438\u0441. 6.<\/strong> \u041d\u043e\u0432\u0430\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f?<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/98c\/444\/c89\/98c444c89ed7651cd03ec8c1945eba45.png\"\/><br \/>  <strong>\u0420\u0438\u0441. 7.<\/strong> \u041d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0442\u0438\u043f\u043e\u0432 source \u043c\u0435\u043d\u044f\u0435\u0442 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/fbd\/181\/11b\/fbd18111b9e58d827dbc556a1c85efa0.png\"\/><br \/>  <strong>\u0420\u0438\u0441. 8.<\/strong> \u041e\u0442\u043a\u0443\u0434\u0430 (\u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f)\u2026<\/p>\n<p>  \u0412 \u0447\u0435\u043c \u0441\u0443\u0442\u044c \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438? \u0412 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0434\u0430\u0442\u044c \u0442\u0435\u0431\u0435 \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0432\u0430\u0436\u043d\u044b\u0435 \u043e\u0431\u0449\u0438\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u044f, \u043d\u043e DOM XSS \u2014 \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u0430\u044f \u0438 \u043d\u0435\u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u043e \u043c\u043d\u043e\u0433\u043e\u043c \u0432\u0435\u0449\u044c.<\/p>\n<h4>\u0421\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430 DOM XSS<\/h4>\n<p>\u0418\u0442\u0430\u043a, \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u0449\u0438\u0445 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u0439 \u043d\u0430 \u0442\u0435\u043c\u0443 \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432, \u0447\u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u043e\u0433\u043e \u0432 DOM XSS?\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, DOM XSS \u2014 \u044d\u0442\u043e \u043f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0423\u0442\u043e\u0447\u043d\u044e: \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u042d\u0442\u043e \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u0430\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f\/\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0438\u0437 \u043d\u0435\u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432, \u0432 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0442\u043e \u0435\u0441\u0442\u044c \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0432 JavaScript.\u0423 \u044d\u0442\u043e\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0439. DOM XSS \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0430 \u00ab\u043b\u044e\u0431\u043e\u0439\u00bb \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u0434\u0430\u0436\u0435 \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 HTML\u2019\u043a\u0435, \u0435\u0441\u043b\u0438 \u0442\u0430\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f JavaScript.\u0420\u0430\u043d\u044c\u0448\u0435 \u043f\u043e\u0438\u0441\u043a \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u043a\u043e\u043d\u0446\u0435\u043d\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u043d\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u0430\u0445, \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445, \u0433\u0434\u0435 \u043c\u044b \u043c\u043e\u0433\u043b\u0438 \u0432\u0432\u043e\u0434\u0438\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445, \u0433\u0434\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u043b\u0438 \u0438\u0442\u043e\u0433, \u2014 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0438 \u0431\u044b\u043b\u0438 \u043d\u0435\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b \u043a\u0430\u043a \u0442\u0430\u043a\u043e\u0432\u044b\u0435. \u0422\u0435\u043f\u0435\u0440\u044c \u0436\u0435 \u0434\u0430\u0436\u0435 \u00ab\u0441\u0442\u0430\u0442\u0438\u043a\u0430\u00bb \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u043d\u0435\u0441\u0442\u0438 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c.\u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0447\u0430\u0441\u0442\u043e \u0434\u043b\u044f DOM XSS \u043d\u0430\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u043d\u0430\u0434\u043e \u043f\u043e\u0441\u044b\u043b\u0430\u0442\u044c XSS\u2019\u043a\u0443 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440. \u0422\u0440\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u2014 \u0442\u043e\u043c\u0443 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435. \u0414\u043b\u044f \u043f\u0435\u0440\u0432\u044b\u0445 \u0434\u0432\u0443\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0432\u0430\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u044b (\u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430\u043c) \u043d\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u0442\u043e, \u0447\u0442\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u00ab#\u00bb. \u042d\u0442\u043e Fragment identifier \u2014 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c URI-\u0441\u0445\u0435\u043c\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0430\u044f \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e, \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430 \u0447\u0430\u0441\u0442\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430. \u041f\u0440\u0438\u043c\u0435\u0440 \u0441 \u0432\u0438\u043a\u0438: \u00abhttp:\/\/www.example.org\/foo.html#bar\u00bb \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441 id=bar \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 foo.html. \u0415\u0433\u043e \u0444\u0438\u0448\u043a\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u043d \u043d\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440, \u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0438\u0437 JavaScript. \u0422\u0430\u043a\u043e\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 web 2.0 \u0441\u0430\u0439\u0442\u0430\u0445 (\u0441\u0435\u0440\u0432\u0438\u0441 Gmail \u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u043c\u0435\u0440).\u0422\u0430\u043a \u0432\u043e\u0442 \u00abhttp:\/\/victim.com\/test.html#\u00bb \u0438\u0437 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0437\u0430\u043f\u0440\u043e\u0441 \u043a test.html, \u043d\u043e \u0431\u0435\u0437 XSS\u2019\u043a\u0438, \u0430 \u0432 JS \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430. \u0418 \u043d\u0438\u043a\u0430\u043a\u0438\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u0437\u0430\u0449\u0438\u0442\u044b (\u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u0432\u0441\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 WAF \u0438\u043b\u0438 IPS) \u043d\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043b\u0435\u0436\u0438\u0442 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u042d\u0442\u043e \u043f\u0435\u0440\u0432\u043e\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0435. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043c\u044b, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0442\u0435\u0445\u043d\u0438\u043a\u0438 \u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0434\u043b\u044f \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 XSS\u2019\u043e\u043a \u0438 SQL-\u0438\u043d\u044a\u0435\u043a\u0446\u0438\u0439, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u0438 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u044b \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c. \u0412-\u0442\u0440\u0435\u0442\u044c\u0438\u0445, \u0445\u043e\u0442\u044f \u043c\u044b, \u043f\u043e \u0441\u0443\u0442\u0438, \u0438 \u0438\u043c\u0435\u0435\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u043c (JavaScript-\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0443), \u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0438 \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0438\u0441\u043a\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 \u2014 \u043e\u0447\u0435\u043d\u044c \u043d\u0435\u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430. \u0422\u043e\u043d\u043a\u043e\u0441\u0442\u0435\u0439 \u0438 \u0445\u0438\u0442\u0440\u043e\u0441\u0442\u0435\u0439 \u2014 \u0445\u043e\u0442\u044c \u043b\u043e\u043f\u0430\u0442\u043e\u0439 \u043a\u043e\u043f\u0430\u0439 :).<\/p>\n<h4>\u0422\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438 \u0438 \u0444\u0438\u0448\u0435\u0447\u043a\u0438<\/h4>\n<p>\u0418\u0442\u0430\u043a, \u0432 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430, \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0438\u0437 \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0421\u0442\u0435\u0444\u0430\u043d\u043e \u0414\u0438 \u041f\u0430\u043e\u043b\u044b (\u0440\u0438\u0441. 9). \u0410\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c JavaScript \u2014 \u0443\u0436\u0430\u0441\u043d\u043e\u0435 \u0434\u0435\u043b\u043e, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438. \u0414\u0430, \u041c\u0430\u0440\u0438\u043e \u0425\u0430\u0439\u0434\u0435\u0440\u0438\u0445 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0434\u0432\u0430 \u0440\u0435\u0433\u044d\u043a\u0441\u043f\u0430 \u0434\u043b\u044f \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 sink \u0438 source:<\/p>\n<pre><code class=\"javascript\">\/((src|href|data|location|code|value|action)\\s*[&quot;'\\]]*\\s*\\+?\\s*=)|((replace|assign|navigate|getResponseHeader|open(Dialog)?|showModalDialog|eval|evaluate|execCommand|execScript|setTimeout|setInterval)\\s*[&quot;'\\]]*\\s*\\()\/  \/(location\\s*[\\[.])|([.\\[]\\s*[&quot;']?\\s*(arguments|dialogArguments|innerHTML|write(ln)?|open(Dialog)?|showModalDialog|cookie|URL|documentURI|baseURI|referrer|name|opener|parent|top|content|self|frames)\\W)|(localStorage|sessionStorage|Database)\/ <\/code><\/pre>\n<p>  \u041d\u043e \u0432\u0435\u0434\u044c \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0439\u0442\u0438\u0441\u044c \u043f\u043e \u0432\u0441\u0435\u043c\u0443 dataflow, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u043e\u0442\u043a\u0443\u0434\u0430 \u0438 \u0447\u0442\u043e \u0431\u0435\u0440\u0435\u0442\u0441\u044f, \u043a\u0443\u0434\u0430 \u0438 \u043a\u0430\u043a \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442\u2026 \u041c\u0430\u043b\u043e \u044d\u0442\u043e\u0433\u043e, \u043a\u0440\u043e\u043c\u0435 \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 DOM XSS-\u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438, \u043d\u0430\u0434\u043e \u0435\u0449\u0435 \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u043e\u0434 \u043d\u0435\u0435 \u044d\u043a\u0441\u043f\u043b\u043e\u0439\u0442. \u0410 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u044b \u2014 \u0440\u0430\u0437\u043d\u044b\u0435, \u0438, \u0447\u0442\u043e \u0445\u0443\u0436\u0435, \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0438\u0445 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u043e. \u041d\u0435 \u0433\u043e\u0432\u043e\u0440\u044f \u0443\u0436 \u043e\u0442 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430\u0445 \u0435\u0441\u0442\u044c \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u043d\u044b\u043c XSS\u2019\u043a\u0430\u043c \u2014 \u0438 \u0438\u0445 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043e\u0431\u0445\u043e\u0434\u0438\u0442\u044c.\u0415\u0441\u043b\u0438 \u0432\u0437\u044f\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 location.href, \u0442\u043e \u0432 \u043d\u0435\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f URL (\u043e\u0431\u0449\u0435\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435):<\/p>\n<pre><code class=\"javascript\">scheme:\/\/user:pass@host\/path\/to\/page.ext\/Pathinfo;semicolon?search.location=value#hash=value&amp;hash2=value2 <\/code><\/pre>\n<p>  \u0410 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u044b \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443 urlencod\u2019\u044f\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 URL. Firefox, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442 \u0441\u0438\u043c\u0432\u043e\u043b\u044b &lt;&gt; \u043f\u043e\u0441\u043b\u0435 #, \u0430 IE \u043d\u0435 \u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442.IE:<\/p>\n<pre><code class=\"javascript\">http:\/\/host\/path\/to\/page.ext\/test%3Ca%22'%0A%60=%20+%20%3E;test%3Ca%22'%0A%60=%20+%20%3E?test&lt;a&quot;'%0A`=%20+%20&gt;;#test&lt;a&quot;'%0A`=%20+%20&gt;; <\/code><\/pre>\n<p>  FF:<\/p>\n<pre><code class=\"javascript\">http:\/\/host\/path\/to\/page.ext\/test%3Ca%22%27%0A%60=%20+%20%3E;test%3Ca%22%27%0A%60=%20+%20%3E?test%3Ca%22%27%0A%60=%20+%20%3E;#test%3Ca%22%27%0A%60=%20+%20%3E;  <\/code><\/pre>\n<p>  \u041f\u043e\u0442\u043e\u043c\u0443 \u043f\u0435\u0440\u0432\u0430\u044f \u0430\u0442\u0430\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0433\u043e\u0434\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f IE, Chrome.\u0412 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f, \u0435\u0441\u043b\u0438 \u0431\u044b \u0443\u044f\u0437\u0432\u0438\u043c\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0438\u043c\u0435\u043b\u0430 \u043a\u043e\u0434<\/p>\n<pre><code class=\"javascript\">&lt;body&gt; &lt;script&gt;document.write(location.hash);&lt;\/script&gt; &lt;\/body&gt; &lt;!-- \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f location.hash \u0432\u043c\u0435\u0441\u0442\u043e location.href --&gt; <\/code><\/pre>\n<p>  \u0442\u043e \u044d\u043a\u0441\u043f\u043b\u043e\u0439\u0442 \u0431\u044b \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0432\u043e \u0432\u0441\u0435\u0445 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430\u0445, \u0442\u0430\u043a \u043a\u0430\u043a FF \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0445\u0440\u0430\u043d\u0438\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0440\u0430\u0441\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435.\u0414\u0430\u043b\u0435\u0435, \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043f\u0440\u0438\u043c\u0435\u0440 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043d\u044b\u0445 \u0442\u0440\u0438\u043a\u043e\u0432. \u0415\u0441\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443\u044f\u0437\u0432\u0438\u043c\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u043c\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438\u0437 referer:<\/p>\n<pre><code class=\"javascript\">document.write('&lt;script src=&quot;http:\/\/Host\/image.gif?t=\u2019+(referrer.split(&quot;\/&quot;)[2])+\u2019&gt;&lt;\/script&gt;'); <\/code><\/pre>\n<p>  \u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0447\u0442\u043e \u0442\u0443\u0442 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c? \u0414\u0430, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 referer! \u0412\u0441\u0435, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e, \u2014 \u0437\u0430\u043c\u0430\u043d\u0438\u0442\u044c \u043d\u0430 \u043d\u0430\u0448 \u0441\u0430\u0439\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0440\u0435\u0434\u0438\u0440\u0435\u043a\u0442\u043d\u0443\u0442\u044c \u0435\u0433\u043e \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0439 \u043d\u0430\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u0443\u044e. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u044b \u043f\u043e\u0432\u043b\u0438\u044f\u0435\u043c \u043d\u0430 \u043f\u043e\u043b\u0435 referer.\u041d\u043e \u0437\u0434\u0435\u0441\u044c \u0432\u0440\u043e\u0434\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u043b\u043e\u043c\u2026 \u0410\u043d \u043d\u0435\u0442. \u0421\u0442\u0435\u0444\u0430\u043d\u043e \u0432\u044b\u044f\u0441\u043d\u0438\u043b, \u0447\u0442\u043e IE \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u043f\u0435\u0446\u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0432 \u0438\u043c\u0435\u043d\u0438 \u0445\u043e\u0441\u0442\u0430. \u0422\u043e \u0435\u0441\u0442\u044c \u043c\u043e\u0436\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d \u0443 \u0441\u0435\u0431\u044f \u00ab.evil.com\u00bb \u0438\u043b\u0438, \u043a\u0430\u043a \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0421\u0442\u0435\u0444\u0430\u043d\u043e, \u00ab\u00abonreadystatechange=eval(name).attacker.com\u00bb.\u041a\u0440\u043e\u043c\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043d\u044b\u0445 \u0448\u0442\u0443\u043a \u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u043e\u0441\u0442\u0435\u0439 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e JavaScript-\u043a\u043e\u0434\u0430 \u0435\u0441\u0442\u044c \u0435\u0449\u0435 \u0438 \u0432\u0441\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 JS-\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u043f\u043e\u0432\u0441\u0435\u043c\u0435\u0441\u0442\u043d\u043e. \u0422\u043e\u0442 \u0436\u0435 jQuery \u0438\u043c\u0435\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043e\u0431\u0435\u0440\u0442\u043e\u043a \u043d\u0430\u0434 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c\u0438 sink\u2019\u0430\u043c\u0438 (\u0441\u043c. \u0440\u0438\u0441. 10).<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/8a9\/778\/506\/8a9778506e1df823ec65c571044d938e.png\"\/><br \/>  <strong>\u0420\u0438\u0441. 9.<\/strong> \u0410\u043d\u0430\u043b\u0438\u0437 JavaScript \u2014 \u043d\u0435\u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0435 \u0437\u0430\u043d\u044f\u0442\u0438\u0435<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/61d\/223\/e14\/61d223e14c1bf5437360f99770efd5b8.png\"\/><br \/>  <strong>\u0420\u0438\u0441. 10.<\/strong> jQuery \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438 \u0435\u0449\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0437\u0430\u0442\u0440\u0443\u0434\u043d\u044f\u044e\u0442 \u0430\u043d\u0430\u043b\u0438\u0437<\/p>\n<h4>\u041e\u0431\u0445\u043e\u0434\u0438\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u044b<\/h4>\n<p>\u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e DOM XSS \u043d\u0430\u0447\u0430\u043b\u043e \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f. \u0422\u0435\u043f\u0435\u0440\u044c \u043a\u043e\u0441\u0432\u0435\u043d\u043d\u043e \u043a\u043e\u0441\u043d\u0435\u043c\u0441\u044f \u0437\u0430\u0449\u0438\u0442\u044b. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u2014 \u043e\u0442\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u0442 JS \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 :). \u041d\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435\u0440\u0435\u0430\u043b\u044c\u043d\u043e. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u2014 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f DOM\u2019\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u043d\u0435\u0434\u0440\u0438\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445\u2026 \u041d\u043e, \u043a\u0430\u043a \u0442\u044b, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0437\u0430\u043c\u0435\u0442\u0438\u043b, DOM XSS \u2014 \u044d\u0442\u043e \u0442\u0430 \u0435\u0449\u0435 \u0442\u0435\u043c\u043a\u0430. \u042d\u0442\u043e \u043a\u0430\u043a \u043d\u0435\u043a\u0430\u044f \u0440\u0430\u0437\u043d\u043e\u0446\u0432\u0435\u0442\u043d\u0430\u044f \u0431\u0443\u0440\u043b\u044f\u0449\u0430\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c, \u043d\u0435 \u0438\u043c\u0435\u044e\u0449\u0430\u044f \u043e\u0441\u043e\u0431\u044b\u0445 \u0433\u0440\u0430\u043d\u0438\u0446. \u041f\u043e\u0442\u043e\u043c\u0443 \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0442\u043e\u043b\u043a\u043e\u0432\u043e\u0433\u043e \u0432 \u043c\u0430\u0441\u0441\u0430\u0445 \u043d\u0435\u0442, \u0430 \u043f\u043e\u0442\u043e\u043c\u0443 \u0438 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0437\u0430\u0449\u0438\u0442\u044b \u043e\u0448\u0438\u0431\u043e\u043a \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u043e.\u041d\u0435 \u0442\u0430\u043a \u0434\u0430\u0432\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b <a href=\"http:\/\/goo.gl\/5Djf7\">\u043e\u0442\u043b\u0438\u0447\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e<\/a>, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u0438 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c. \u0412 \u043d\u0435\u0439 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0434\u0432\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u00ab\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0433\u043e\u00bb \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f DOM\u2019\u0430 \u0437\u0430 \u0441\u0447\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.\u041f\u0440\u0438\u043c\u0435\u0440 1. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 element.textContent, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u043d\u0438\u044f\/\u0447\u0442\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430 \u043a\u0430\u043a\u043e\u0433\u043e-\u043b\u0438\u0431\u043e \u0443\u0437\u043b\u0430. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u0436\u0435 \u0434\u043b\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 HTML. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"javascript\">var div = document.createElement('div'); div.innerHTML = 'Hello &lt;a href=&quot;http:\/\/bob.com&quot;&gt;Bob&lt;\/a&gt;!'; console.log(div.textContent); \/\/ Hello Bob!; <\/code><\/pre>\n<p>  \u0417\u0434\u0435\u0441\u044c div.textContent \u0432\u044b\u0440\u0435\u0437\u0430\u043b \u00ab<a href=\"http:\/\/bob.com\">Bob<\/a>\u00bb \u043f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430. \u0412\u0440\u043e\u0434\u0435 \u0431\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u0438 XSS-\u043a\u0443 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043c\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u043c? \u0410 \u0432\u043e\u0442 \u0438 \u043d\u0435\u0442. \u0423 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0435\u0441\u0442\u044c \u0444\u0438\u0447\u0430: \u043e\u043d HTML-\u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 (entity) \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 HTML:<\/p>\n<pre><code class=\"javascript\">var div = document.createElement('div'); div.innerHTML =    'Hello &lt;a&gt;&amp;lt;script&amp;gt;alert(&amp;quot;!&amp;quot;)&amp;lt;\/script&amp;gt;&lt;\/a&gt;!'; console.log(div.textContent); \/\/ Hello &lt;script&gt;alert(&quot;!&quot;)&lt;\/script&gt;! <\/code><\/pre>\n<p>  \u0422\u043e \u0435\u0441\u0442\u044c \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u043c\u0430\u0445\u0438\u043d\u0430\u0446\u0438\u044f\u043c\u0438 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043d\u0435\u0434\u0440\u0438\u0442\u044c XSS\u2019\u043a\u0443. \u0415\u0441\u043b\u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u044d\u0442\u0438\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/p>\n<pre><code class=\"javascript\">var div = document.createElement('div'); div.textContent = '&lt;span&gt;Foo &amp; bar&lt;\/span&gt;'; console.log(div.innerHTML) \/\/ &amp;lt;span&amp;gt;Foo &amp;amp; bar&amp;lt;\/span&amp;gt; <\/code><\/pre>\n<p>  \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u043e\u043f\u044f\u0442\u044c-\u0442\u0430\u043a\u0438 \u0432\u0440\u043e\u0434\u0435 \u0431\u044b \u0432\u043f\u043e\u043b\u043d\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u0410\u0432\u0442\u043e\u0440 \u043e\u0442\u043c\u0435\u0447\u0430\u0435\u0442, \u0447\u0442\u043e document.createTextNode \u0438\u043c\u0435\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435. \u0421\u0438\u043c\u0432\u043e\u043b\u044b &lt;, &gt;, &amp; \u0431\u044b\u043b\u0438 \u0437\u0430\u043c\u0435\u043d\u0435\u043d\u044b \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438. \u0418 \u044d\u0442\u0438\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u00ab\u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438\u00bb. \u041d\u043e \u0442\u044b, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0437\u0430\u043c\u0435\u0442\u0438\u043b, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u0432 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u0430\u0436\u043d\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u2014 \u043a\u0430\u0432\u044b\u0447\u043a\u0430. \u0410 \u044d\u0442\u043e\u0442 \u0444\u0430\u043a\u0442 \u0438\u0437 \u0442\u0435\u043e\u0440\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 XSS \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u043d\u0430\u043c \u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 XSS \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0438\u0432\u0435\u043d\u0442\u043e\u0432 (event), \u0447\u0442\u043e \u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0430\u0432\u0442\u043e\u0440:<\/p>\n<pre><code class=\"javascript\">function escapeHtml(str) { var div = document.createElement('div'); div.appendChild(document.createTextNode(str)); return div.innerHTML; }; var userWebsite = '&quot; onmouseover=&quot;alert(\\'derp\\')&quot; &quot;'; var profileLink = '&lt;a href=&quot;' + escapeHtml(userWebsite) + '&quot;&gt;Bob&lt;\/a&gt;'; var div = document.getElementById('target'); div.innerHtml = profileLink; \/\/ &lt;a href=&quot;&quot; onmouseover=&quot;alert('derp')&quot; &quot;&quot;&gt;Bob&lt;\/a&gt; <\/code><\/pre>\n<p>  \u041a\u0430\u043a \u043d\u0438 \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0440\u0430\u0441\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u00ab\u043f\u0435\u0440\u0435\u0442\u0435\u043a\u0430\u0435\u0442\u00bb \u0432 \u0434\u0440\u0443\u0433\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, jQuery \u0438\u043c\u0435\u0435\u0442 \u0442\u0435 \u0436\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0432 .text(). \u0412\u0434\u043e\u0431\u0430\u0432\u043e\u043a \u0432 \u0442\u043e\u0439 \u0436\u0435 domxsswiki \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0435\u0440\u043f\u043d\u0443\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438.<\/p>\n<h4>\u0420\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/h4>\n<p>\u041f\u0430\u0440\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u043d\u0430\u0439\u0434\u0435\u043d \u0432 Twitter\u2019\u0435:XSS\u2019\u043a\u0430, \u043a\u0430\u043a \u043d\u0438 \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u0431\u044b\u043b\u0430 \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u043e\u0439:<\/p>\n<pre><code class=\"javascript\">http:\/\/twitter.com\/#!javascript:alert(document.domain); <\/code><\/pre>\n<p>  \u041f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0441\u0435\u0432\u0434\u043e-\u0445\u044d\u043d\u0434\u0435\u0440\u0430 javascript \u0432 location \u0438, \u043a\u0430\u043a \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435, \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043d\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u0434\u0430.\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0441 \u0441\u0430\u0439\u0442\u0430 AVG:<\/p>\n<pre><code class=\"javascript\">\/\/display the correct tab based on the url (#name) var pathname = $(location).attr('href');var urlparts = pathname.split(&quot;#&quot;); <\/code><\/pre>\n<p>  \u042d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f \u043e\u043f\u044f\u0442\u044c-\u0442\u0430\u043a\u0438 \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u0430:<\/p>\n<pre><code class=\"javascript\">http:\/\/www.avg.com\/eu-en\/download#&quot;&gt;&lt;img src=x onerror=prompt(\/xss\/);&gt; <\/code><\/pre>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u0433\u0434\u0430 \u0432\u0440\u043e\u0434\u0435 \u043a\u0430\u043a \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u0431\u043b\u0438\u0437\u043a\u0430, \u043d\u043e \u043f\u0440\u043e\u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0435 \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u043e. \u0414\u0430\u043d\u043d\u0430\u044f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u0431\u044b\u043b\u0430 \u043d\u0430\u0439\u0434\u0435\u043d\u0430 \u0432 Adobe Flex 3. \u0423\u044f\u0437\u0432\u0438\u043c\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u2014 \/history\/historyFrame.html \u2014 \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043c\u0430\u0441\u0441\u043e\u0432\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0421\u0435\u0442\u0438 (\u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043d\u0430 \u00ab\u043c\u043e\u0449\u043d\u044b\u0445\u00bb \u043f\u043e\u0440\u0442\u0430\u043b\u0430\u0445).<\/p>\n<pre><code class=\"javascript\">function processUrl()  {         var pos = url.indexOf(&quot;?&quot;);         url = pos != -1 ? url.substr(pos + 1) : &quot;&quot;;         if (!parent._ie_firstload) {             parent.BrowserHistory.setBrowserURL(url);             try {                 parent.BrowserHistory.browserURLChange(url);             } catch(e) { }         } else {             parent._ie_firstload = false;         } }  var url = document.location.href; processUrl(); document.write(url); <\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u0447\u043a\u0438, \u0442\u043e \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u2014 XSS-\u043a\u0430 \u0432\u043e\u0442 \u0437\u0434\u0435\u0441\u044c, \u043d\u0430 \u0431\u043b\u044e\u0434\u0435\u0447\u043a\u0435. \u041d\u043e \u043d\u0435\u0442, \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u2014 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 parent._ie_firstload \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 processUrl. \u041d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u043d\u0435 \u043f\u0440\u043e\u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u2014 \u044f\u0432\u0430\u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0434\u043e\u0439\u0434\u0435\u0442 \u0434\u043e \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430.\u0422\u0430\u043a \u043a\u0430\u043a \u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0435\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u043a\u0430\u043a parent, \u0442\u043e JavaScript \u0432\u044b\u043b\u0435\u0442\u0438\u0442 \u043d\u0430 \u00abparent.BrowserHistory.setBrowserURL(url);\u00bb. \u041d\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0445\u0438\u0442\u0440\u0438\u0442\u044c \u0438 \u043d\u0430 \u043d\u0430\u0448\u0435\u043c \u0441\u0430\u0439\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0434\u0432\u0430 \u0444\u0440\u0435\u0439\u043c\u0430:<\/p>\n<pre><code class=\"javascript\">&lt;html&gt;  &lt;body&gt;   &lt;iframe name=&quot;_ie_firstload&quot;&gt;&lt;\/iframe&gt;   &lt;iframe src=&quot;http:\/\/www.vuln.site\/app\/history\/historyFrame.html?#&lt;script&gt;alert('xss')&lt;\/script&gt;&quot;&gt;&lt;\/iframe&gt;  &lt;\/body&gt; &lt;\/html&gt; <\/code><\/pre>\n<p>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0440\u0435\u0439\u043c, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043a\u043e\u0434 \u0441 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u00abif (!parent._ie_firstload)\u00bb. \u0418 \u0442\u0430\u043a \u043a\u0430\u043a \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043a\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u043d\u0430 Else \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0443\u0434\u0430\u0447\u043d\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f, \u0434\u0430\u0432\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c\u0441\u044f DOM XSS.\u041d\u043e \u0438 \u0443 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0438 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, FF \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a parent \u0441 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430, \u0430 \u043f\u043e\u0442\u043e\u043c\u0443 \u044e\u0437\u0430\u0442\u044c \u0435\u0435, \u043f\u043e \u043e\u043f\u044b\u0442\u0443 \u0430\u0432\u0442\u043e\u0440\u0430, \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0442\u0438\u0432 IE.\u0415\u0441\u043b\u0438 \u0442\u0435\u0431\u044f \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u0430 \u0442\u0435\u043c\u0430 DOM XSS, \u0442\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0433\u043b\u044f\u043d\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0431\u0440\u0430\u0442\u044c \u043e\u043f\u044b\u0442\u0430: <a href=\"http:\/\/goo.gl\/ZWei3\">goo.gl\/ZWei3<\/a>, <a href=\"http:\/\/goo.gl\/gZawa\">goo.gl\/gZawa<\/a>, <a href=\"http:\/\/goo.gl\/XRwBT\">goo.gl\/XRwBT<\/a>, <a href=\"http:\/\/goo.gl\/plqs9\">goo.gl\/plqs9<\/a>.<\/p>\n<h4>\u041f\u043e\u0441\u043b\u0435\u0441\u043b\u043e\u0432\u0438\u0435<\/h4>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u043e\u0432\u0442\u043e\u0440\u044e\u0441\u044c, \u043d\u043e, \u043f\u043e\u0434\u0432\u043e\u0434\u044f \u0438\u0442\u043e\u0433\u0438, \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e DOM Based XSS \u2014 \u044d\u0442\u043e \u0442\u043e\u0442 \u0435\u0449\u0435 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 \u0437\u0432\u0435\u0440\u0435\u043a. \u0410 \u0447\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0441\u0442\u0435\u0439 \u0438 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0435\u0439 \u2014 \u0442\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0431\u0430\u0433\u043e\u0432. \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u0442\u043e\u0433\u043e, \u0447\u0442\u043e JavaScript \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u00ab\u043f\u0435\u0440\u0435\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442 \u043d\u0430 \u0441\u0435\u0431\u044f \u043e\u0434\u0435\u044f\u043b\u043e\u00bb, \u0430 \u0432\u0435\u0431 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0432\u0441\u0435 \u0431\u043e\u043b\u0435\u0435 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u043d\u044b\u043c. \u0412 \u043e\u0431\u0449\u0435\u043c, \u0443\u0447\u0435\u043d\u044c\u0435 \u2014 \u0441\u0432\u0435\u0442, \u0430 \u0442\u0432\u043e\u0440\u0438\u0442\u044c \u2014 \u0447\u0443\u0434\u0435\u0441\u043d\u043e :). \u0423\u0434\u0430\u0447\u043d\u044b\u0445 \u0440\u0435\u0441\u0435\u0440\u0447\u0435\u0432!<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/6ba\/78d\/e11\/6ba78de1193ba257dd7b576cfe343386.jpg\"\/><br \/>  <i>\u0412\u043f\u0435\u0440\u0432\u044b\u0435 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043e \u0432 \u0436\u0443\u0440\u043d\u0430\u043b\u0435 \u201e\u0425\u0430\u043a\u0435\u0440\u201c \u043e\u0442 05\/2013.<\/i><\/p>\n<p>  \u041f\u043e\u0434\u043f\u0438\u0448\u0438\u0441\u044c \u043d\u0430 \u00ab\u0425\u0430\u043a\u0435\u0440\u00bb  <\/p>\n<ul>\n<li><a href=\"http:\/\/bit.ly\/habr_subscribe_paper\">1 999 \u0440. \u0437\u0430 12 \u043d\u043e\u043c\u0435\u0440\u043e\u0432 \u0431\u0443\u043c\u0430\u0436\u043d\u043e\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/digital_xakep\">1249\u0440. \u0437\u0430 \u0433\u043e\u0434\u043e\u0432\u0443\u044e \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443 \u043d\u0430 iOS\/iPad (\u0440\u0435\u043b\u0438\u0437 Android&#8217;\u0430 \u0441\u043a\u043e\u0440\u043e!)<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/habr_android\">\u00ab\u0425\u0430\u043a\u0435\u0440\u00bb \u043d\u0430 Android<\/a><\/li>\n<\/ul>\n<p>  <a href=\"http:\/\/bit.ly\/xakep_on_ipad\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/a86\/fc6\/a22\/a86fc6a22179b180d53a36f9cb5a7d3f.png\"\/><\/a><\/p>\n<p>  P.S. \u041c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0437\u043d\u0430\u043d\u0438\u044f\u043c\u0438 \u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u0438 \u0438\u0434\u0435\u044f\u043c\u0438, \u043d\u0430\u043f\u0438\u0441\u0430\u0432 \u0434\u043b\u044f ][? \u0414\u0430\u0439\u0442\u0435 \u0437\u043d\u0430\u0442\u044c :). \u041c\u044b \u043f\u043b\u0430\u0442\u0438\u043c \u0433\u043e\u043d\u043e\u0440\u0430\u0440\u044b, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u043c\u043e\u0442\u0438\u0432\u0430\u0446\u0438\u0435\u0439.<habracut\/>    \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/company\/xakep\/blog\/189210\/\"> http:\/\/habrahabr.ru\/company\/xakep\/blog\/189210\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">   \t<img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/8e9\/fd5\/035\/8e9fd5035c6b4c7bda977188bef00b85.jpg\"\/><\/p>\n<p>  <i>XSS \u043d\u0435\u0441\u043f\u0440\u043e\u0441\u0442\u0430 \u0441\u0442\u043e\u0438\u0442 \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u043f\u0438\u0441\u043a\u0430 \u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0435\u0439 OWASP TOP 10. \u041b\u044e\u0431\u043e\u0439 \u0442\u043e\u043b\u043a\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u043e \u043d\u0438\u0445 \u0437\u043d\u0430\u0435\u0442. \u041d\u043e \u044d\u0442\u043e \u043d\u0435 \u043c\u0435\u0448\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0435: \u0432\u043e\u0441\u0435\u043c\u044c \u0438\u0437 \u0434\u0435\u0441\u044f\u0442\u0438 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438\u043c\u0435\u044e\u0442 XSS-\u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438. \u0410 \u0435\u0441\u043b\u0438 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u043b\u0438\u0447\u043d\u044b\u0439 \u043e\u043f\u044b\u0442 \u043f\u0435\u043d\u0442\u0435\u0441\u0442\u043e\u0432 \u0431\u0430\u043d\u043a\u043e\u0432, \u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u0430 \u00ab\u0434\u0435\u0441\u044f\u0442\u044c \u0438\u0437 \u0434\u0435\u0441\u044f\u0442\u0438\u00bb. \u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u0442\u0435\u043c\u0430 \u0438\u0437\u044a\u0435\u0437\u0436\u0435\u043d\u0430 \u043e\u0442 \u0438 \u0434\u043e, \u043e\u0434\u043d\u0430\u043a\u043e \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u0432\u0438\u0434 XSS, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e \u0440\u0430\u0437\u043d\u044b\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c \u043f\u043e\u0442\u0435\u0440\u044f\u043b\u0441\u044f. \u042d\u0442\u043e \u2014 DOM Based XSS. \u0418 \u043a\u0430\u043a \u0440\u0430\u0437 \u043e \u043d\u0435\u043c \u044f \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u0438\u0448\u0443.<\/i><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-189210","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/189210","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=189210"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/189210\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=189210"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=189210"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=189210"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}