Por que o Ajax entre domínios é uma preocupação de segurança?

Por que foi decidido que usarXMLHTTPRequest para fazer chamadas XML não deve fazer chamadas além do limite do domínio? Você pode recuperar JavaScript, imagens, CSS, iframes e qualquer outro conteúdo que eu possa pensar de outros domínios. Por que as solicitações HTTP do Ajax não têm permissão para cruzar os limites do domínio? Parece uma limitação estranha, considerando que a única maneira de eu ver isso sendo abusado seria se alguém injetasse Javascript na página. Entretanto, nesse caso, você pode simplesmente adicionar um elemento img, script ou iframe ao documento para solicitar que o URL de terceiros e enviá-lo ao servidor.

[Editar]

Algumas das respostas apontam os seguintes motivos, vamos apontar os motivos pelos quais eles não criam um motivo importante para não permitir isso.

XSRF (falsificação de solicitação entre sites, também conhecida como CSRF, XSRF)

Você pode fazer ataques XSRF sem usar isso. Como regra geral, o XMLHTTPRequest não é usado, simplesmente porque é muito difícil fazer um XMLHTTPRequest de maneira compatível com todos os principais navegadores. É muito mais fácil adicionar uma tag img ao URL se você desejar que ele carregue seu URL.

Postagem em site de terceiros
<script type="text/javascript">
  $.post("http://some-bank.com/transfer-money.php", 
         { amount: "10000", to_account: "xxxx" })
</script>

Pode ser realizado com

<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: por que você deixaria a vulnerabilidade em um novo recurso

Você não está criando mais inseguranças. Você está apenas incomodando os desenvolvedores que desejam usá-lo de uma maneira definitiva. Qualquer pessoa que queira usar esse recurso para o mal (também conhecido como impressionante) poderia usar outro método para fazê-lo.

Conclusão

Estou marcando a resposta debobince correto, porque ele apontou o problema crítico. Como o XMLHTTPRequest permite que você publique, com credenciais (cookies) no site de destino e leia os dados enviados de volta do site, juntamente com o envio das credenciais das pessoas, você pode orquestrar algum javascript que envie uma série de formulários, incluindo formulários de confirmação , complete com todas as chaves aleatórias geradas que foram colocadas no lugar para tentar impedir um XSRF. Dessa forma, você poderia navegar pelo site de destino, como um banco, e o servidor da web do banco não saberia dizer que não era apenas um usuário comum que envia todos esses formulários.

questionAnswers(9)

yourAnswerToTheQuestion