我试图使用jQuery的ajax方法在不同的域上搜索Web服务。在做了一些研究之后,它看起来似乎不允许这是为了防止跨站点脚本。
我遇到了一个包含这一行的工作:
$.support.cors = true;
在我的javascript代码的顶部。根据我的理解,这可以在jQuery中实现跨站点脚本。
使用这一行代码是否会使我的网站更容易受到攻击?我一直听说XSS是一个安全问题,是否有合法的XSS用途?
答案 0 :(得分:35)
XSS不是可以在jQuery中启用的功能。如果jQuery核心有一个XSS漏洞,那将是非常非常不寻常,但它有可能并且它被称为DOM-based XSS。
“跨域资源共享”或CORS与XSS, BUT 不同,但如果Web应用程序有XSS漏洞,则攻击者可以对所有人进行类似CORS的访问该域上的资源。简而言之,CORS使您可以控制如何打破same origin policy,这样您就不需要引入完整的XSS漏洞。
$.support.cors
查询功能依赖于Access-Control-Allow-Origin
HTTP响应标头。此可能是漏洞。例如,如果Web应用程序在每个页面上都有Access-Control-Allow-Origin: *
,那么攻击者将具有与XSS vulenrablity相同的访问级别。请注意您引入CORS标头的页面,尽量避免使用*
。
所以回答你的问题:否 Web应用程序永远不需要引入XSS漏洞,因为SOP有很多方法,例如CORS / jsonp /跨域代理/ access-control-origin。
答案 1 :(得分:11)
只有在您的浏览器中启用了CORS但jQuery尚不支持它时,它才有帮助:
在不支持的环境中启用跨域请求 cors但是允许跨域XHR请求(Windows小工具等), 设置$ .support.cors = true;。 CORS WD
将此属性设置为true不会导致安全漏洞。
答案 2 :(得分:3)
当黑客能够注入脚本代码以将请求更改为另一个域时,他也可以在脚本中设置此javascript标志。
因此,在此入侵点处设置此标志并未发生太大变化。