只有ajax会跨域吗_为什么跨域Ajax是安全问题?

为什么决定使用XMLHTTPRequest进行XML调用不应该跨域边界进行调用?您可以检索JavaScript,图像,CSS,iframe以及我可以想到的来自其他域的几乎所有其他内容。为什么不允许Ajax HTTP请求跨越域边界?考虑到我可以看到它被滥用的唯一方法,这似乎是一个奇怪的限制,那就是如果有人要向页面中注入Javascript。但是,在这种情况下,您只需在文档中添加一个img,脚本或iframe元素即可获取该文件以请求第三方URL并将其发送到服务器。

[编辑]

一些答案指出了以下原因,让我们指出了它们没有创建不允许这样做的主要原因的原因。

XSRF(跨站点请求伪造,也称为CSRF,XSRF)

您可以完全不使用XSRF进行攻击。通常,根本不使用XMLHTTPRequest,只是因为很难以与所有主要浏览器兼容的方式创建XMLHTTPRequest。如果希望他们加载URL,只需在URL上添加一个img标记就容易得多。

发布到第三方网站

$.post("http://some-bank.com/transfer-money.php",

{ amount: "10000", to_account: "xxxx" })

可以完成

JPunyon:为什么要将该漏洞保留为新功能

您不会再造成任何不安全感。您只是给想要以某种方式使用它的开发人员带来不便。任何想将此功能用于邪恶(又称“真棒”)的人都可以使用其他方法来实现。

结论

我将bobince的答案标记为正确,因为他指出了关键问题。因为XMLHTTPRequest允许您使用凭据(cookie)将其发布到目标站点,并读取从站点发送回的数据以及发送人员凭据,所以您可以编排一些javascript,这些javascript可以提交一系列表单,包括确认表单,并附有为防止XSRF而生成的随机密钥。这样,您就可以像银行一样浏览目标站点,而银行的网络服务器将无法断定,不仅仅是提交所有这些表格的普通用户。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值