XSS(跨站脚本攻击)
常见类型
-
存储型XSS
恶意代码被永久存储在目标服务器上,如数据库、论坛帖子。每次用户访问受感染页面时,都会触发恶意代码。 -
反射型XSS
恶意代码通过URL参数等方式立即返回给用户并执行,通常依赖于用户点击特定链接。- 示例:
http://example.com/search?q=<script>alert('XSS')</script>
- 示例:
-
DOM型XSS
- 攻击者通过某种方式将攻击代码植入被害者网页中
- 如网页运行通过如下代码将搜索内容写入搜索框
document.getElementById("searchResults").innerHTML = input - 攻击者把恶意代码放在input中
- 可能是通过URL传递恶意代码
- 如网页运行通过如下代码将搜索内容写入搜索框
- 用户访问网页的时候,网页把攻击代码写入到DOM中,直接在客户端执行的恶意代码,不经过服务器返回。
- 攻击者通过某种方式将攻击代码植入被害者网页中
防范措施
-
输入验证与过滤
对用户输入进行严格验证和过滤,避免注入恶意脚本。 -
输出编码
在输出数据到HTML、JavaScript、URL等位置时进行适当编码,防止脚本被执行。 -
使用[use::CSP](Content Security Policy)
-
避免使用危险函数
如innerHTML、document.write等易导致XSS的函数,应尽量使用更安全的替代方案,如DOM操作API。