Кроссдоменный AJAX

332
28 апреля 2018, 17:50

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

Answer 1

Тем, что подобная "всеразрешающая" политика:

  • значительно снизит уровень безопасности в вебе;

  • против интересов людей, которые в сети создают что-то помимо мусора.

Предположим, Вася пользуется популярным сайтом А, где у него есть учетная запись и некоторые персональные/чувствительные данные. И тут Вася открывает в другой вкладке браузера сайт Б, сделанный Петей.
Петя - сцуко хитрый. Он поместил на странице своего сайта скрипт, который обращается к сайту А. Если посетитель петиного сайта там авторизован, Петя легко ворует чужие данные, а также может изменять и удалять их.
В реальном мире, что мешает таким Петям делать подобное? Политика same-origin!

Другой пример.
Иван запилил на своем сайте страницу, где регулярно выкладывает свои работы, интересные огромному числу посетителей. Сайт Ивана предоставляет оригинальный контент и работает быстро, посетители довольны.
И вдруг, Иван замечает что его сервер не справляется, посетители жалуются. Что еще хуже, в поисковике появился сайт Пети с копиями контента Ивана - и не просто с присвоением авторства, а еще и в окружении рекламы типа "порно-с-осликами-скачать-сейчас".
Посмотрев логи, Иван видит что его сервер завален запросами от посетителей сайта Пети (потому что тот наговнокодил на jQuery парсер с интервалом выполнения 500мс).
В реальном мире, что помогает защищать контент от тупых школьников с jQuery и спасает от лишней нагрузки? Политика same-origin!

Answer 2

Если сервер разрешает CORS (Cross-origin resource sharing), то появляется возможность использовать данные хранящиеся в браузере для доступа к личной информации пользователей.

Например в браузере хранится Cookie с сессией пользователя, тогда предоставляется возможность осуществлять действия от имени этого пользователя, отправляя запросы самостоятельно. Один из видов таких атак называется CSRF.

Существует много способов защиты от подобных атак, но в целях безопасности, многие сервера просто запрещают кроссдоменный доступ.

READ ALSO
Калькулятор услуг JS

Калькулятор услуг JS

Есть калькулятор услуг, не могу допереть никак, как сделать чтобы он умножал каждое выбранное значение на 30, а не просто приплюсовал?

173
Неправильно сравниваются значения в JS

Неправильно сравниваются значения в JS

Делаю простую проверку на ширину экрана для адаптации, но получается что-то не то, вот код:

179
Почему не работает js код?

Почему не работает js код?

Есть функция, которая должна переворачивать массив (как метод reverse):

144