Update: You may also want to look at: Обновление: Вы также можете посмотреть по адресу: MySpace Hack: How To View Any Users Private Videos MySpace взломать: Как просматривать любые частным пользователям видео .

Recently Недавно Samy Сами [samy at namb dot la] released a worm ["Samy worm" or "JS.Spacehero worm"] in MySpace, popular social networking platform like Friendster, which caused him to be added as hero to millions of MySpace users (”but most of all, samy is my hero.”) as well as add him as their friend, all without their explicit permission. [Сами по namb точка ла] выпущен червь [ "Сами червь" или "JS.Spacehero червь"] в MySpace, популярные социальные сети как платформы Friendster, в результате чего он мог быть добавлен в качестве героя для миллионов пользователей MySpace ( "но большинство всего Сами мой герой. "), а также добавлять его в качестве друга, все без их разрешения.

After flooding the Network, MySpace stepped in and fixed the hole. После наводнения сети MySpace Р. и фиксированным отверстием. Samy is still “hero” to millions of MySpace users in their profile. Сами по-прежнему "герой" для миллионов пользователей MySpace в своем профиле.

The purpose of this article is to highlight the security issues exposed by this worm. Цель этой статьи заключается в том, чтобы осветить вопросы безопасности подвержены этим червем. It is definitely not limited to MySpace alone and the worm propagated not due to MySpace’s fault but fault of browser like Internet Explorer. Это, безусловно, не ограничиваются только MySpace, и червь распространяется не по причине MySpace вины, но вины, как браузер Internet Explorer. And the flaw is waiting to be exploited in several other web applications of similar nature like Ryze or LinkedIn etc.. И изъяна, ожидая быть использовано в ряде других веб-приложений аналогичного характера, как Ryze или LinkedIn т.д.. In the remainder of this article I will summarize the modus-operandi of his script and suggest on ways to protect your web application against such attacks. В оставшейся части этой статье я кратко методы работы-его сценарий и предложить пути для защиты Ваших веб-приложением от таких нападений.

Samy used AJAX to add himself as a friend and hero when users visited his page. Сами AJAX используется для добавления себя в качестве друга и героя, когда пользователь посетил его странице. This requires Javascript to be executed in the browser which does the dirty work. Это требует Javascript должен быть казнен в браузер, который делает грязную работу.

MySpace dutifully eliminates javascript from users html (which becomes their profile). MySpace долга исключает javascript пользователей html (который становится его профиль). However Sammy disguised the word javascript with an embedded newline - “java\nscript”. Однако Сэмми скрытого слова javascript со встроенными строки - "java \ nscript".

MySpace doesn’t allow script tags. MySpace не позволяет скрипт-теги. So he embedded his javascript in CSS - style=”background:url(’javascript:eval(document.all.mycode.expr)’)” И он его встроенного javascript в CSS - стиль = "справочная информация: url (" javascript: eval (document.all.mycode.expr) ') "

AJAX can fetch documents from the same domain (or sub-domain) only. AJAX могут получить документы из одного и того же домена (или домене) только. So if the user was on profile.myspace.com, he moved them to www.myspace.com which provides the same information but allows him to be added as a friend. Так что если пользователь по profile.myspace.com, он вывез их на www.myspace.com которых представлена та же информация, но и позволяет ему быть добавлено в качестве друга.
if (location.hostname == 'profile.myspace.com') document.location = 'http://www.myspace.com' + location.pathname + location.search; если (location.hostname == 'profile.myspace.com') document.location = 'http://www.myspace.com' + location.pathname + location.search;

After overcoming a trvial hash issue he adds his code and “but most of all, samy is my hero.” text to users profile. После преодоления trvial хэш вопрос он добавляет свой код и "но, прежде всего, Сами мой герой." Текст для пользователей профиля. This causes the worm to propagate not only when users visit his site but also when they visit any of the infected users. Это приводит к распространению червя не только тогда, когда пользователи посещают его сайт, но и при посещении любого из зараженных пользователей. Yes, simple exponential spreading. Да, простое экспоненциальное распространение.

Samy provides Сами обеспечивает detailed notes and code for his exploit подробные записки и код для его использования after the exploit was filtered / stopped by MySpace. после использования была фильтрованная / остановили MySpace.

How can you protect your web application from such attacks? Как Вы можете защитить свой веб-приложением от таких атак?
First and foremost I assume you have filtering in place like MySpace did filtering scripts and javascript tags etc. However obviously that is not enough; not even close. Прежде всего, я полагаю, у вас есть фильтрация в месте, как MySpace сделали фильтрацию скриптов и javascript теги и т.д. Однако, очевидно, что недостаточно, даже не близко.
Your filtering tags should be intelligent to recognize words separated by newlines as shown above. Ваш фильтрации теги следует признать интеллектуальное слова, разделенные строки, как показано выше.

Other users profile (or any html content) should be viewable only from a separate sub-domain. Другие пользователи профиль (или любого содержания html) следует просмотреть только от отдельных домене.

Any actions like adding a link, friend, connection etc. must be done from pages which can never contains any other users code. Любые действия, как добавить ссылку другу, связи и т.п. должны быть сделано со страниц, которые могут никогда не содержит каких-либо других пользователей код. If you provide a link while viewing others profile to add his as a friend then on clicking you take him to a separate page where the users gets to edit information about his friend and add him after confirmation. Если вы предоставляете ссылке во время просмотра другими профиль, чтобы добавить его в качестве друга затем нажав на вас взять его на отдельную страницу, где пользователи получает для редактирования информации о своему другу и добавить его после подтверждения. This page should not contain any html content from the user being added. Эта страница не должна содержать каких-либо html содержимое из пользователей суммируются.

In essence we need to captalize on AJAX security model which prevents code execution from different site. По сути нам нужно captalize на AJAX модели безопасности, которое предотвращает выполнение кода из разных сайта.