Зачем запрещать междоменный ajax, когда скриптовые теги работают? - PullRequest
5 голосов
/ 23 февраля 2011

Поскольку использовать JSONP в теге сценария для извлечения данных из другого домена довольно просто, разве мы не должны позволять XMLHttpRequest это делать?Не имеет особого смысла утверждать, что это усиливает безопасность, когда возможно обойти это, хотя и с более грязной семантикой.

Ответы [ 2 ]

8 голосов
/ 23 февраля 2011

JSONP работает, только если поставщик допускает это.

Если междоменный AJAX работает, одной из первых проблем будут люди, публикующие другие домены в надежде, что у вас есть аутентифицированная учетная запись. Это CSRF.

Они могут получить страницу, аутентифицированную как вы, взять ваш токен, а затем ПОСТАВИТЬ что-нибудь вредоносное с вашим токеном (который сообщает приложению, что это внутренний запрос).

3 голосов
/ 23 февраля 2011

На самом деле JSOP - это умный обходной путь для ограничений той же политики происхождения, но в сущности это является межсайтовой скриптинговой атакой, навязанной самим себе (помните, что JSONP вызывает с помощью тегов сценария вместо XHR, так что вы даете полный контроль надвсю вашу страницу поставщику данных JSONP - обычно они не злые, но иногда они некомпетентны, так что имейте это в виду).

Существует множество дискуссий о том, как исправить ту же политику происхождения в новыхверсии ECMAScript, потому что, очевидно, он не работает, если его нужно обойти, чтобы сделать какие-либо гибридные приложения.На мой взгляд, интересная идея заключается в том, чтобы иметь более дешевую версию XHR, которая не будет отправлять файлы cookie или бесполезные заголовки и, следовательно, сможет предотвращать атаки подделки межсайтовых запросов, но при этом разрешать безопасные гибридные приложения, не предоставляя поставщику данных полный доступ к вашей странице.Но мы все еще должны ждать этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...