но подобные атаки уже существуют и совсем не зависят от XMLHTTPRequest.

у было решено, что с помощьюXMLHTTPRequest для выполнения вызовов XML не должны делать вызовы через границу домена? Вы можете извлечь JavaScript, изображения, CSS, iframes и любой другой контент, который я могу придумать, из других доменов. Почему HTTP-запросы Ajax не могут пересекать границы домена? Это кажется странным ограничением, если принять во внимание, что единственный способ, которым я вижу, что он злоупотребляет, - это если кто-то вставит Javascript на страницу. Однако в этом случае вы можете просто добавить в документ элемент img, script или iframe, чтобы он запросил сторонний URL-адрес и отправил его на сервер.

[Редактировать]

В некоторых ответах указываются следующие причины. Давайте укажем причины, по которым они не создают основную причину для запрета этого.

XSRF (подделка межсайтовых запросов, также известная как CSRF, XSRF)

Вы можете делать атаки XSRF, не используя это вообще. Как правило, XMLHTTPRequest вообще не используется, просто потому, что очень сложно создать XMLHTTPRequest способом, совместимым со всеми основными браузерами. Гораздо проще просто добавить тег img к URL, если вы хотите, чтобы они загружали ваш URL.

Публикация на стороннем сайте
<script type="text/javascript">
  $.post("http://some-bank.com/transfer-money.php", 
         { amount: "10000", to_account: "xxxx" })
</script>

Может быть достигнуто с

<body onload="document.getElementById('InvisbleForm').submit()"
    <div style="display:none">
        <form id="InvisbleForm" action="http://some-bank.com/transfer-money.php" method="POST">
            <input type="hidden" name="amount" value="10000">
            <input type="hidden" name="to_account" value="xxxxx">
        </form>
    </div>
</body>
JPunyon: почему вы оставляете уязвимость в новой функции

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

Заключение

Я отмечаю ответ отbobince как правильно, потому что он указал на критическую проблему. Поскольку XMLHTTPRequest позволяет отправлять учетные данные (файлы cookie) на целевой сайт и считывать данные, отправленные обратно с сайта, наряду с отправкой учетных данных пользователей, вы можете организовать некоторый javascript, который будет представлять серию форм, включая формы подтверждения , дополните любые сгенерированные случайные ключи, которые были введены в действие, чтобы попытаться предотвратить XSRF. Таким образом, вы можете просматривать целевой сайт, например, банк, и веб-сервер банка не сможет сказать, что это был не обычный пользователь, отправляющий все эти формы.

Ответы на вопрос(9)

Ваш ответ на вопрос