XSS跨站脚本攻击及漏洞防御
跨站脚本攻击XSS,是最普遍的Web应用安全漏洞。这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意脚本代码的执行,从而达到恶意攻击用户的目的。
什么是XSS跨站脚本攻击
XSS 的定义
跨站脚本攻击(cross-site scripting,简称 XSS),是黑客用来潜入 Web 应用程序的最普遍的应用程序层攻击之一。攻击者往Web页面里插入恶意html代码,当用户浏览该页面时,嵌入Web里的html代码会被执行,从而达到恶意攻击用户的特殊目的。
XSS 的目的
盗走客户端 cookies(相当于我们打开房间的钥匙),或者任何可以用于在 Web 站点确定客户身份的其他敏感信息。获取这些信息后,黑客就有了合法用户的身份,从而可以冒充用户与站点交互。
XSS 的危害
- 盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号;
- 控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力;
- 盗窃企业重要的具有商业价值的资料;
- 非法转账;
- 强制发送电子邮件;
- 网站挂马;
- 控制受害者机器向其它网站发起攻击
常见的 XSS
反射型XSS、存储型XSS和DOM型XSS。
三种常见的XSS
反射型 XSS
反射型XSS,简单理解,即把用户输入的数据“反射”给浏览器。该类型只是简单地将用户输入的数据直接或未经过完善的安全过滤就在浏览器中进行输出,导致输出的数据中存在可被浏览器执行的代码数据。
攻击者通常需要诱使用户点击恶意构造的包含XSS代码URL才能攻击成功。当用户点击恶意构造的URL之后,在URL中的XSS代码作为输入提交到服务器端,服务器解析后响应,在响应内容中出现这段XSS代码,最终这段XSS代码被浏览器解析执行。
存储型 XSS
存储型XSS脚本攻击是指Web应用程序会将用户输入的数据信息保存在服务端的数据库或其他文件形式中,网页进行数据查询展示时,会从数据库中获取数据内容,并将数据内容在网页中进行输出展示,因此存储型XSS具有较强的稳定性。
存储型XSS脚本攻击最为常见的场景就是在博客或新闻发布系统中,黑客将包含有恶意代码的数据信息直接写入文章或文章评论中,所有浏览文章或评论的用户,都会在他们客户端浏览器环境中执行插入的恶意代码。
DOM型 XSS
DOM就是文档对象模型(Document Object Model),是在浏览器中展示文档的一种结构格式。DOM使用JavaScript动态脚本来表示文档的结构,比如表单字段或会话cookie。DOM同样可以用作浏览器安全-例如,限制脚本获取其他领域的cookie值。基于DOM的XSS缺陷可能会发生在当前活动的界面,比如一个JavaScript函数请求修改DOM元素,攻击者可以利用当前函数进行攻击。
常见的存储型和反射型的XSS攻击,需要将代码发送到服务器端,然后将结果返回到浏览器。此种利用方式的代码仅仅会在浏览器端执行,不会发送到服务器端。
对于DOM XSS攻击,通常不能进行黑盒测试,因为它需要的不是可以访问到源代码,而是根据客户端的代码进行攻击。自动化测试很少会发现基于DOM的XSS攻击,因为自动化测试是通过发送特定的字段来观察服务器的响应。
漏洞防御
- 在用户提交参数前,将提交的字符< 、>、&、" 、' 、+、/等进行转义,严格控制输出。
- 将输入转化为小写对比,若匹配则过滤。
- 将cookie设置为http-only,js脚本将无法读取到cookie信息。
- 纯前端渲染,明确innerText、setAttribute、style,将代码与数据分隔开。
- 避免不可信的数据拼接到字符串中传递给这些API,如DOM中的内联事件监听器,location、onclick、onerror、onload、onmouseover等,标签的href属性,JavaScript的、setTimeout()、setInterval()等,都能把字符串作为代码运行。
- 对于不受信任的输入,都应该限定一个合理的长度。
- 严格的CSP,禁止加载外域代码,禁止外域提交,禁止内联脚本执行等较为严格的方式。
智能云网
智能云网社区是华为专为开发者打造的“学习、开发、验证、交流”一站式支持与服务平台,该平台涵盖多领域知识。目前承载了云园区网络,云广域网络,数通网络开放可编程,超融合数据中心网络,数通网络设备开放社区共五个场景。为了响应广大开发者需求,还提供了开发者交流、API 体验中心、多媒体课件、SDK工具包、开发者工具以及远程实验室共六大工具,让开发者轻松开发。欢迎各位前来体验。
- 点赞
- 收藏
- 关注作者
评论(0)