存储型XSS
攻击者通过在服务器存储恶意脚本代码,导致在其它用户访问相关网站时自动执行该代码。这种攻击方式与反射性XSS不同,后者依赖于用户输入立即反射回页面。存储型XSS危害更大,因为它可以影响到多个用户。
攻击原理:
- 恶意代码注入: 攻击者首先通过恶意脚本注入到应用程序的可存储部分,例如数据库、文件系统或其它持久化存储中。通常位于评论、帖子和用户配置等。
- 存储: 服务器接受到输入后,没有对恶意内容进行过滤和转义等操作,直接将其存储。
- 触发执行: 当其它用户访问该网页是,浏览器直接从服务器加载该内容,并执行其中的脚本。由于该脚本从受信任的源加载,浏览器不会阻止执行。
防范手段
- 输入进行验证: 严格检验用户的输入
- 输出编码: 将用户输入输出到网页之前,对其进行适当HTML编码,避免脚本被执行。或者直接全部当成字符串处理。
- 内容安全策略: CSP限制可执行的脚本来源,防止加载未授权的脚本。
- 使用安全库: 使用成熟的库和框架来处理用户输入和输出,减少漏洞风险