目录
1.1 XSS漏洞原理
1.2 XSS漏洞分类
1.3 XSS漏洞危害
1.4 XSS漏洞的防范
1.5 XSS各类别的区别
1.1 XSS漏洞原理
Cross-site Scripting,简称XSS
原理:就是程序对输入输出没有做合理的过滤限制,导致攻击者构造的字符输出到前端时被浏览器当作有效代码解析执行从而产生的危害
1.2 XSS漏洞分类
1、反射型XSS 非持久性XSS(一次性),当用户访问一个带有XSS代码 的HTML请求时,服务端接收后处理,然后把带有XSS的数据发送到浏览器,浏览器解析这段带有XSS代码的数据后,造成XSS漏洞
2、存储型XSS,持久性XSSS,存储型XSS是最危险的一种跨站脚本漏洞,当攻击者提交一段代码后,被服务端接收并存储,当攻击者或用户再次访问某个页面时,这段XSS代码被程序读出来响应给浏览器,造成XSS跨站攻击
3、DOM型XSS DOM型XSS注入和反射型的原理类似,只不过DOM型的XSS注入不需要经过后端代码处理,而是在前端Javascript调用DOM元素时可能产生的漏洞,可能触发DOM型XSS的javascript代码
总结:存储型XSS危害最大,因为他存储在服务器端,所以不需要我们和被攻击者有任何接触,只要被攻击者访问了页面就会遭受攻击,而反射型和DOM型需要我们去诱使用户点击我们构造的恶意URL,需要我们和用户有直接或间接的接触。
1.3 XSS漏洞危害
1、窃取用户信息:攻击者可以通过XSS漏洞窃取用户的cookie或其他敏感信息,如账户密码,浏览历史,IP地址等,这些信息的泄露可能导致用户遵守财产损失或隐私被侵犯
2、会话劫持:通过篡改或窃取应用cookie,攻击者可以进行会话劫持,冒充真实用户访问受保护的资源
3、钓鱼攻击:XSS漏洞可以用于钓鱼攻击,将用户重定向到恶意网站,诱骗用户提供个人信息或登录凭证
4、中间人攻击:攻击者可以通过XSS漏洞代理转发流经攻击者的所有web流量,实施中间人攻击,窃取或篡改数据5、恶意代码执行:XSS漏洞允许攻击者在受害者的浏览器中执行恶意Javascript代码,这不仅可以导致页面内容被篡改,还可能激活木马程序或其他恶意软件
6、蠕虫和病毒传播:存储型XSS漏洞,由于其持久化特性,容易造成蠕虫病毒的传播,进一步扩大攻击范围
7、破坏网站信息:通过在网站上注入恶意内容,XSS攻击可以破坏网站的信誉,导致用户流失。
1.4 XSS漏洞的防范
1、输入验证:对所有用户输入进行严格的验证,确保他们符合预期的格式和类型。
2、输出编码:对于从服务器传递到客户端的数据,使用适当的编码方法(如HTML编码,Javascript编码或ULR编码)来防止恶意脚本的执行。
3、使用HTTPOnly Cookie:设置cookie属性为HTTPOnly,可以防止JavaScript访问cookie,从而较少XSS攻击的风险。
4、内容安全策略(csp):通过定义一个内容安全策略(CSP),限制网页可以加载和执行的内容来源,可以有效防止XSS攻击,CSP可以帮助阻止恶意脚本的执行,因为它限制了那些外部资源可以加载到页面上。
5、黑名单和白名单过滤:通过黑名单过滤已知的危险元素,如<script>标签和onerror属性等。同时,也可以采用白名单的方式,只允许预定义的安全元素存在6、使用模板引擎的HTML转义功能:如果使用模板引擎生成HTML内容,应开启模板引擎自带的HTML转义功能,以防止恶意代码的注入。
7、避免内联事件:尽量不要使用内联事件处理函数.
1.5 XSS各类别的区别
三者的区别
1、被被攻击对象不同
反射型的攻击对象是攻击者去寻找的
存储型的是广撒网的方式或者指定的方式,危害性更大范围更广
DOM型的被攻击对象其实和反射型XSS被攻击对象差不多,就是给攻击对象发送URL
2、解析位置不同
反射型脚本被解析的地方是浏览器
存储型脚本被解析的地方是服务器
DOM型也是浏览器,不同于反射型的是不需要联网
3、存储时间不同
反射型是一次性的存储型是存储在服务器上
DOM型是允许输入的点不同
4、 位置不同反射型一般是在搜索框或者是页面跳转等等
存储型一般是在浏览或者用户存储的位置
DOM是在DOM位置上,不取决于输入环境上