为什么AJAX不安全?

时间:2018-10-30 17:17:21

标签: ajax http

我是JS和AJAX的新手,有一天,我尝试了一个跨域AJAX请求。经过一些研究,我发现AJAX不能(自然地)跨域工作,因为它是不安全的。

来自Wikipedia:“此策略可防止一页上的恶意脚本通过该页面的文档对象模型访问另一网页上的敏感数据。”

但是当您无法使用默认HTTP时,AJAX如何请求访问“敏感数据”呢?

1 个答案:

答案 0 :(得分:0)

AJAX请求是HTTP请求。

AJAX代表异步Javascript和XML。在第一个基于浏览器的javascript HTTP客户端API XMLHttpRequest之后,就这样命名。

HTTP请求并不是天生就不安全的,但是某些情况可能会使HTTP请求成为问题。

与“ Ajax”请求有关的一个大问题是,至少在过去,HTTP请求可以携带会话/ cookie信息。

这意味着,如果Ajax请求不受浏览器沙箱(跨域)的限制,则可能意味着站点A的所有者可以代表用户向站点B发出请求。

示例:您已登录到流行的社交网络。您的浏览器使用cookie来标识您的登录会话。我向您发送了一个指向evil.example.org的链接。如果不存在跨站点限制,我现在可以为您创建一个HTTP +与社交网络的会话,并代表您采取行动。

但是,这还不是故事的结局。可以进行跨站点请求。这称为CORS请求。

但是:这种工作方式是您要向其发出请求的网站的所有者必须允许。在我们之前的示例中,这意味着社交网络需要明确允许“ evil.example.org ”发出此类请求。

此网站授予您权限的方式是通过CORS标头。

其他解决方法是通过:

  • 您要访问的网站上托管的框架。 (使用特定代码)
  • 您控制的代理。
  • 如果您要访问的服务器以非常特定的方式交付其内容。 (同样,您需要控制目标服务器)。

如果您控制目标服务器,最好的选择是只使用CORS。如果您不是最好的选择,那就是设置一个由您控制的代理。