欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

浅析XSS与XSSI异同

程序员文章站 2022-04-30 21:36:08
这篇文章主要介绍了XSS与XSSI异同,跨站脚本(XSS)和跨站脚本包含(XSSI)之间的区别是什么?防御方法有什么不同?感兴趣的小伙伴们可以参考一下... 16-02-15...

michael cobb:自上世纪90年代,攻击者就已经开始利用xss漏洞,并且,最主要的网站(例如谷歌、雅虎和facebook)都在一定程度上受到过xss漏洞的影响。与大多数应用层攻击(例如sql注入),基于xss的攻击会攻击应用的用户,而不是应用或服务器。这些攻击的工作原理是注入代码(通常例如javascript客户端脚本)到web应用的输出。大部分网站有很多注入点,包括搜索域、cookies和表格。虽然这些恶意脚本不能直接感染服务器端信息,它们仍然可以破坏网站的安全性。通过使用document object model操作来更改表格值,改变网页的外观或切换表格操作以张贴提交的数据到攻击者的网站,攻击者可以窃取数据、控制用户的会话、运行恶意代码或用作网络钓鱼欺诈的一部分。

浅析XSS与XSSI异同

xssi是xss的一种形式,它利用了这样一个事实,即浏览器不会阻止网页加载图像和文字等资源,这些资源通常托管在其他域和服务器。例如,脚本可能提供攻击者需要的功能,帮助创建特定的页面—很多网站包含托管在https://developers.google.com/speed/libraries/#jquery的javascript库jquery。然而,这种包含可能被利用来从一个域名读取用户数据—当用户正在访问另一个域名时。例如,如果abc银行有一个脚本用于读取用户的私人账户信息,攻击者可以在其自己的恶意网站包含这个脚本,当abc银行的客户访问攻击者的网站时,攻击者就可以从abc银行的服务器提取用户信息。

开发者可以部署多种措施来抵御xssi攻击。其中一种方法是向用户提供独特的不可预测的授权令牌,在服务器响应任何请求之前,需要发送回该令牌作为额外的http参数。脚本应该只能响应post请求,这可以防止授权令牌作为get请求中的url参数被暴露,同时,这可以防止脚本通过脚本标签被加载。浏览器可能会重新发出get请求,这可能会导致一个操作会执行一次以上,而重新发出的post请求需要用户的同意。

在处理json请求时,在响应中增加非可执行前缀,例如“\n”,以确保脚本不可执行。在相同域名运行的脚本可以读取响应内容以及删除前缀,但在其他域名运行的脚本则不能。此外,开发者还应该避免使用jsonp(具有填充功能的json)来从不同域名加载机密数据,因为这会允许钓鱼网站收集数据。同时,发送响应表头“x-content-type-options: nosniff”也将帮助保护ie和谷歌chrome用户免受xssi攻击。

为了应对xss攻击,可在http content-type响应表头或者html代码中meta标签中http-equiv属性中指定charset,让浏览器不会解译其他字符集的特殊字符编码。对于使用asp.net开发网站的开发者,微软anti-cross site scripting library可以帮助保护web应用抵御跨站脚本漏洞。

现在有很多开源漏洞扫描工具可供开发者使用,以测试其代码是否容易遭受xss攻击,例如vega、wapiti、owasp的zed attack proxy和skipfish。企业应该定期对网站进行扫描,同时,在底层代码变更或依靠第三方库的功能集成到各种网页时,也应该扫描网站。

读完此文,大家应该知道两者的区别在哪了。