Каковы причины такой же политики происхождения в Ajax? - PullRequest
2 голосов
/ 14 января 2012

Почему эта политика была даже создана? Сдается мне, что есть только недостатки этого. Если вы хотите, есть способы получить доступ к другому домену (например, JSONP). Разве всем не было бы легче, если бы такой политики не было?

Но я предполагаю, что парни, которые создали это, умны, и что они сделали это по причине. Я хотел бы знать эту причину.

Ответы [ 2 ]

9 голосов
/ 12 апреля 2012

Политика одинакового происхождения , а не , в первую очередь предназначенная для защиты от межсайтового скриптинга (XSS), как указано выше, но для предотвращения подделки межсайтовых запросов (CSRF) .

Вредоносный сайт не может загружать данные с других сайтов, если это явно не разрешено этим другим хостом.

например. Когда я просматриваю www.malicious.com, я не хочу, чтобы он мог получить доступ к моей параллельной аутентифицированной сессии на www.mybank.com, запросить некоторые из моих данных из интерфейса AJAX банка и отправить их на malware.com, используя мой браузер как реле.

Чтобы обойти это ограничение для предполагаемого использования или общедоступной информации, в современных браузерах был реализован протокол совместного использования ресурсов (CORS).

0 голосов
/ 14 января 2012

Безопасность.

Если его не существует, и ваш сайт принимает входные данные от пользователя, я могу делать плохие вещи.Например, я мог бы поместить в текст, который я ввел на вашем сайте, какой-то javascript, который сделал ajax-вызов для моего домена.Когда кто-нибудь просматривал мой ввод (как в SO, когда мы просматриваем ваш вопрос), этот javascript выполнялсяЯ мог бы посмотреть, как ваш сайт работал в моем инспекторе, добавить наблюдателей в ваш ввод и украсть данные ваших пользователей.

Та же политика происхождения запрещает мне отправлять ваши данные в мой домен через ajax.Чтобы увидеть, насколько это просто, если у вас есть простой веб-сайт, просто введите в одну из следующих форм следующую информацию и отправьте данные.

javascript:alert(document.cookie);

Если вы не предпримете шагиЧтобы сделать что-то с этим (ваша структура может автоматически), я просто вставил JavaScript на ваш сайт, и когда кто-то просматривает его, он будет выполняться.(Это называется инъекция javascript )

А теперь представьте, что я стал немного более креативным и добавил код ajax ....

Браузер нуждается предотвращение подобных вещей или использование Интернета было бы цифровым самоубийством.

...