Допустим, у меня есть сайт, но на нем нет crossdomain.xml или clientaccesspolicy.xml.
Это означает, что люди не могут получить доступ к моему сайту через приложения Silverlight или Flash.
Но они могут использовать, скажем, cURL в PHP (или эквивалент на других языках), чтобы получать информацию с моего сайта и предоставлять ее своим приложениям Silverlight и Flash через REST или WebService и т. Д.
Может кто-нибудь объяснить, как именно эти ограничения защищают мой сайт, например из междоменного скриптинга?
От чего они защищают то, что нельзя сделать с помощью PHP / cURL и эквивалентов, которые действительно имеют доступ к моему сайту через скрипт?
Ответ 1 · рейтинг 12 · KeithMahoney
PHP - это серверная технология, и код выполняется на сервере, а не на машине пользователя. Silverlight - это технология на стороне клиента, работающая на компьютере пользователя.
Если бы код Silverlight мог делать произвольные веб-запросы к любому домену, это открыло бы дверь для целого ряда атак межсайтового скриптинга.
Представьте этот сценарий:
Боб заходит на www.OnlineBanking.com и входит в систему, чтобы проверить баланс своего счета. Он покидает этот сайт, перейдя по другому адресу. Он не нажимает "Выйти", поэтому он все еще находится в системе (в качестве альтернативы, он открывает новое окно / вкладку браузера, оставляя банковский сайт открытым).
Боб переходит на evil.com, который содержит приложение Silverlight .
Приложение Silverlight загружается и запускается на машине Боба.
Это приложение делает веб-запрос к www.OnlineBanking.com/secretaccountdetails.html. Этот файл требует аутентификации для чтения (evil.com не аутентифицирован, поэтому не может получить к нему доступ).
Боб, однако, ИДЕТ аутентифицирован, и запрос выполнен успешно. Приложение silverlight может читать содержимое этого файла и делать с ним все, что угодно (включая отправку на evil.com).
Ограничения междоменных запросов в Silverlight предотвращают описанный выше сценарий. Когда приложение silverlight делает запрос к OnlineBanking.com, оно проверяет наличие файла междоменной политики, поскольку приложение обслуживается из другого домена. Поскольку OnlineBanking.com не имеет файла политики, разрешающего междоменные запросы, запрос не выполняется, и приложение Silverlight не может загрузить secretaccountdetails.html.