как виджеты типа "http://sharethis.com/" делают то, что похоже на вызовы XSS - PullRequest
2 голосов
/ 04 декабря 2008

Как такие инструменты, как этот, могут выполнять обратный вызов в стиле ajax на центральный сайт? в основном они дают вам «тег для размещения на вашем сайте, где бы он ни находился. Так что в этом виджете у вас есть возможность попросить отправить вам электронное письмо для страницы, на которой вы сейчас находитесь. Я предполагаю, что это делает ajax Стиль перезвоните, чтобы поделиться этим, кто отправляет электронную почту. Но как они могут сделать это с прокси на вашем сервере и без блокировки браузером как XSS эксплойт?

Любые ответы на этот вопрос будет принята с благодарностью за вашу помощь. Я предполагаю, что работа с Flickr API вызовет те же проблемы?

Ссылка из заголовка: http://sharethis.com/

Ответы [ 3 ]

6 голосов
/ 04 декабря 2008

Они дают вам скрипт для включения на ваш сайт. Этот скрипт имеет полный доступ к DOM и вашим куки. Для того, чтобы он перезвонил на их сайт, они используют технику, называемую JSONP. Сценарий, который вы включили, добавляет другой сценарий с параметрами в строке запроса. Затем сервер возвращает JSON (который является просто JavaScript), и данные извлекаются.

Если вы создаете коллажи, вы должны верить, что эти виджеты не будут делать что-то вредоносное, например, красть ваши куки. В IE 8 будет улучшена поддержка безопасного XSS.

1 голос
/ 05 декабря 2008

Вам даже не нужно использовать JSON для этого.

Вы можете получить код javascript из любого домена с помощью тега script, поэтому многие из этих виджетов просто создают узел сценария, а ответ форматируется как:

someFunction("Callback Data");

someFunction уже является существующей функцией в исходном источнике виджета и выгружает данные в DOM.

0 голосов
/ 05 декабря 2008

Ответ заключается в том, что браузеры по какой-то причине блокируют запросы XmlHttp только на серверы, отличные от исходного. Вы можете свободно использовать теги , в которых SRC указывает куда угодно, и, конечно, такие теги сценариев можно динамически вставлять в DOM.

...