安全-XSS攻击

2024-01-15  本文已影响0人  javaBoy_hw

XSS攻击简单的分类为反射型XSS、存储型XSS、DOM-based 型、基于字符集的 XSS、基于 Flash 的跨站 XSS、未经验证的跳转 XSS 6种类型。常见分类是前面3种,后面3个较小众。

1. 反射型XSS

反射型XSS,又称非持久型XSS。这种攻击方式的注入代码是从目标服务器通过错误信息、搜索结果等等方式“反射”回来的:发出请求时,XSS代码出现在URL中,作为输入提交到服务器端,服务器端解析后响应,XSS代码随响应内容一起传回给浏览器,最后浏览器解析执行XSS代码。

反射型XSS漏洞攻击的四大特点:
① 即时性。不经过服务器存储,直接通过 HTTP 的 GET 和 POST 请求就能完成一次攻击,拿到用户隐私数据;
②攻击者需要诱骗点击;
③反馈率低,所以较难发现和响应修复;
④盗取用户敏感保密信息。

防止出现反射型XSS漏洞的五大措施:
① Web 页面渲染的所有内容或者渲染的数据都必须来自于服务端;
②尽量不要从 URL,document.referrer,document.forms 等这种 DOM API 中获取数据直接渲染;
③尽量不要使用 eval, new Function(),document.write(),document.writeln(),window.setInterval(),window.setTimeout(),innerHTML,document.creteElement() 等可执行字符串的方法;
④如果做不到以上几点,也必须对涉及 DOM 渲染的方法传入的字符串参数做 escape 转义;(重要防范措施)
⑤ 前端渲染的时候对任何的字段都需要做 escape 转义编码。

2. 存储型XSS

存储型XSS,又称持久型XSS。

存储型XSS三大特点:
①持久性,植入在数据库中;
②危害面广,甚至可以让用户机器变成 DDoS 攻击的肉鸡;
③ 盗取用户敏感私密信息。

存储型XSS漏洞的三大措施:
①后端在入库前应该选择不相信任何前端数据,将所有的字段统一进行转义处理;
②后端在输出给前端数据统一进行转义处理;
③前端在渲染页面 DOM 的时候应该选择不相信任何后端数据,任何字段都需要做转义处理。

3. DOM-based 型

4. 基于字符集的 XSS

基于字符集的 XSS漏洞的两大措施:
①记住指定 <meta charset="utf-8">;
② XML 中不仅要指定字符集为 utf-8,而且标签要闭合。

5. 基于 Flash 的跨站 XSS

6. 未经验证的跳转 XSS

防止未经验证的跳转 XSS漏洞的两种措施:
①对待跳转的 URL 参数做白名单或者某种规则过滤;
②后端注意对敏感信息的保护, 比如 cookie 使用来源验证。

具体做法:
1.前端渲染的时候对任何的字段都需要做 escape 转义编码。
2.后端在入库前应该选择不相信任何前端数据,将所有的字段统一进行转义处理。
3.后端在输出给前端数据统一进行转义处理。
4.指定 <meta charset="utf-8">。
5.XML 中不仅要指定字符集为 utf-8,而且标签要闭合。
6.设置会话Cookie的HTTP Only属性。
7.X-Frame-options配置为SAMEORIGIN。(https://developer.mozilla.org/zh-CN/docs/web/http/headers/x-frame-options
8.严格定义 Content-Type: application / json。检查Content-Type设置为html,一定要改为application / json。
9.配置CSP,Content Security Policy:self、data、具体制定域名(aqyj和rhtx)3种效果比对。

参考资料

上一篇下一篇

猜你喜欢

热点阅读