一、跨站脚本概述
1.什么是跨站脚本
跨站点脚本(XSS)是一种编码注入漏洞。它通常出现在 web 应用程序中。XSS 使攻击者能够向其他用户浏览的网页中注入恶意内容。XSS 允许攻击者绕过访问控制,它是 OWASP Top10 最常见的漏洞之一。XSS 是网络服务器上的第二大漏洞。根据易受攻击站点处理的数据的敏感性和站点组织实施的任何安全缓解措施的性质,此漏洞的严重性/风险可能从有害到主要安全风险不同等级
2.类型
有三种类型的 XSS,反射 XSS,存储 XSS,和基于 DOM 的 XSS。每种类型都有不同的方式向服务器传递恶意负载。攻击的效果是一样的。
3.审计内容
跨站点脚本漏洞很难从 web 应用程序中识别和移除。搜索缺陷的最佳实践是执行严格的代码审计,并搜索用户通过 HTTP 输入的内容可能在任何系统 HTML 输出的地方。
(1)不受信任的数据不会像超文本标记语言或 JavaScript 那样在相同的超文本传输协议响 应中传输。 (2)当数据从服务器传输到客户端时,不可信的数据和 HTTP 响应必须被正确编码。不要假 设服务器上的数据是安全的。最佳做法是始终审计数据。 (3)当引入到 DOM 中时,不可信数据必须使用以下应用编程接口之一来引入: a) Node.textContent b) document.createTextNode c) Element.setAttribute(仅第二个参数) 代码审计者也应该知道 HTML 标签(比如< img src…>,< iframe…>,< bgsound src…>等。可以用来传输恶意的 JavaScript。网络应用程序漏洞自动工具/扫描仪可以帮助发现跨站点脚本漏洞。然而,他们无法找到所有的 XSS 漏洞,因此手动代码审计很重要。手动代码审计也不能涵盖所有内容,但是基于您的风险水平,实施深度防御方法始终是最好的方法。OWASP Zed 是一个易于使用的集成渗透测试工具,用于发现网络应用程序中的漏洞。ZAP 提供了自动扫描仪以及一套工具,允许您手动查找安全漏洞。它充当一个网络代理, 108您可以将浏览器指向它,这样它就可以看到流向某个站点的流量,并允许您对应用程序进行爬虫、扫描、模糊和攻击,还有其他开源和商用扫描仪。
二、.NET ASPX框架
关于 ASPX.网页代码审计应该审计以确保 web 配置文件不会关闭页面验证。
< pages validateRequest="false" />
.Net framework 4.0 不允许关闭页面验证。因此,如果程序员想转向页面验证,开发人员需要回归到 2.0 验证模式。
< httpRuntime request validation-Mode = " 2.0 "/>
代码审计者需要确保页面验证在任何地方都不会被关闭,并且如果它被关闭,就要理解为什么以及它给组织带来的风险。
< % @ Page Language = " c# " validation request = " false ">
三、.NET MVC框架
当 MVC 网络应用程序输入恶意的 XSS 代码时,它们会抛出如下错误:示例.NET XSS 框架错误:为避免此漏洞,请确保包含以下代码:
不幸的是,HtmlEncode 或验证功能不足以处理 XSS,尤其是在用户输入需要添加到JavaScript 代码、标签属性、XML 或 URL 中时。在这种情况下,一个好的选择是反 XSS库。
四、防御方法
1.使用 Microsft’s Anti-XSS 库
防止 XSS 的另一个帮助是使用反 XSS 库。
2.JavaScript 和 JavaScript 框架
如今,Javascript 和 Javascript 框架都广泛应用于 web 应用程序中。这阻碍了代码审计者了解哪些框架在防止 XSS 缺陷方面做得很好,哪些框架做得不好。代码审计人员应该审计一下,看看对于正在使用的框架是否存在任何 CVE,并审计 javascript 框架是否是最 新的稳定版本。