如何测试XSS漏洞

如何测试XSS漏洞

2009年3月11日 由 铁花 留言 »

黑盒手动测试

  • 有输入框的页面测试

对于非富文本在输入框中输入特殊字符 <”tiehua ‘> 提交

在提交后的页面查看源代码根据关键字tiehua查找源代码中的tiehua前后的<”>’是否已经被转义成

&lt&quot&gt&apos 如果未被转义说明这个输入框存在xss漏洞的嫌疑(提交bug)。

对于富文本输入框输入<img onerror=”alert(123)” src=http://xxx.com>提交页面

如果页面有出现排版问题或者js错误说明这个输入框存在xss漏洞的嫌疑(提交bug)。

  • 页面链接参数的测试

链接带参数的如:

http://mall.taobao.com/?ad_id=&am_id=&cm_id=&pm_id=

该链接包含了4个参数,对于这种的测试方法和输入框测试方法一样只不过把参数当成你的输入框进行

提交。如:

http://mall.taobao.com/?ad_id=<”tiehua’>&am_id=&cm_id=&pm_id=

另:可能大家会说光这点不足以说服开发修改bug,很可惜本文旨在说明如何找到xss漏洞并不是说明

如何利用xss漏洞,感兴趣的看情况线下交流呵呵。

黑盒工具测试

推荐工具

  • Paros(免费)
  • Acunetix.Web.Vulnerability.Scanner (商业工具)

白盒代码扫描测试

在上一篇中我们讲到了xss漏洞产生的代码原因和解决方法如:

<span>$!productName</span>

此类的非富文本代码我们可以强制要求规范为:

<span> $!stringEscapeUtil.escapeHtml ($!productName)</span>

对于富文本的我们可以强制要求代码规范为通过过滤层过滤。

根据以上的两条规则,我们可以从白盒代码上去进行静态扫描代码是否按照规范编写来预防和筛选xss漏洞。

预告
下集将介绍如何使用paros.

转载务必注明出处 Taobao QA Team,原文地址: http://qa.taobao.com/?p=882
### XSS 跨站脚本攻击概述 XSS(Cross-Site Scripting)是一种常见的Web应用程序安全漏洞,允许攻击者将恶意脚本注入到网页中。这些脚本会在受害者的浏览器上执行,从而窃取敏感数据或进行其他有害活动。 #### 基于DOM的XSS 基于DOM的XSS是指攻击者通过操控客户端JavaScript,使得恶意脚本被执行。这种类型的攻击不依赖于服务器端,而是通过修改浏览器中运行的JavaScript来实现[^1]。 #### 反射型XSS 反射型XSS也被称为非持久性跨站点脚本攻击。其特点是攻击者注入的数据会直接反映在HTTP响应中。一个典型的例子是一个带有XSS攻击向量的链接,每次攻击都需要用户的点击才能生效[^2]。 #### 存储型XSS 存储型XSS则是指攻击者提交的内容被永久存入目标系统的数据库或其他文件内,并且当受害者浏览含有该内容的页面时就会触发攻击。这类攻击的影响范围更广,因为一旦成功植入,所有访问受影响资源的人都可能成为潜在的目标[^3]。 --- ### Web 应用程序中的XSS 测试方法 为了有效检测并修复存在XSS漏洞,在开发周期的不同阶段都应该实施相应的测试策略: #### 自动化工具扫描 利用专门设计用于发现Web应用安全隐患的安全评估软件来进行初步筛查。例如OWASP ZAP、Burp Suite等都提供了强大的功能帮助识别各种形式的XSS缺陷。 #### 手工渗透测试 对于某些复杂场景下的逻辑错误所引发的隐蔽性较高的XSS问题,则需依靠经验丰富的安全专家采用手工方式深入挖掘。这通常涉及到模拟真实世界里的攻击行为模式以及尝试不同的输入组合以期找到突破口。 #### 单元/集成测试案例编写 开发者可以在编码过程中加入针对特定函数接口调用处可能出现的风险点编写的单元测试或者集成测试用例,确保新特性上线前已经充分考虑到了安全性方面的要求。 ```python def test_xss_protection(): # 创建一个包含特殊字符的字符串作为测试输入 payload = "<script>alert('XSS')</script>" # 将payload传递给待测的应用程序组件处理... result = app.process_input(payload) # 验证返回的结果不会导致任何HTML标签未转义的情况发生 assert '<' not in result and '>' not in result, "可能存在XSS风险" ``` --- ### 预防与缓解措施建议 采取有效的防御手段可以大大降低遭受XSS攻击的可能性: - **输出编码**:始终对来自不可信源的数据进行适当转换后再显示出来;比如使用`htmlspecialchars()` PHP内置函数把尖括号替换成对应的实体表示法。 - **CSP (Content Security Policy)** :定义严格的加载外部资源白名单机制,阻止非法来源引入任意JS代码片段。 - **HttpOnly Cookies** : 设置Cookie属性为HttpOnly状态,即使存在XSS也能防止JavaScript读取它们。 - **框架自带保护**:现代前端库如React.js默认会对模板插值部分做必要的过滤工作,减少程序员犯错几率的同时提高了整体安全性水平。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值