ROUND-03 XSS攻击
一、xss攻击的构造技巧
- 利用字符编码来插入执行脚本
- 通过绕过长度限制来插入执行脚本
- 通过使用一些不受同源策略限制的标签,触发执行脚本,例如
- 利用window浏览器窗体,不受同源策略限制的介质,来实现跨域、跨页面传递数据
二、xss防御
针对攻击技巧,来制定防御方式
- 设定httpOnly, 能够禁止读取数据和cookie
- 输入检查,针对一些特殊字符做xss filter(通过过滤器,针对一些特殊的字符进行编解码,表单类型/json类型),参考1-转义formdata中部分html字符, 参考2-转义json中部分html字符
- 输出检查 当数据输出到页面的时候,需要做html encode /js encode/url encode/ css encode,避免注入的代码通过闭合引号、使用伪协议等注入执行脚本 4)html 富文本的处理更为困难,使用页面元素黑白名单,避免使用<div>这种能够进行请求的标签 5)防止DOM BASED XSS ,需要针对嵌入的html\js\css 进行编码,避免脚本的注入
- xss 攻击总结 存储型xss通常会比反射型xss更具有杀伤力, 存储型XSS长期存在并出发,不改变URL,并且会绕过一些IE和firefox的 xss filter检测,风险更大 攻击的角度,反射型XSS通常会诱导用户去点击一个链接,存储型是会在用户做不同操作的过程中都可能植入playload进行攻击 用户交互性操作,更能够引发XSS WORM 蠕虫攻击 4、 CSRF cross site request forgery 跨站点请求伪造 1)本质:拿到用户的身份,替用户执行操作 2)前提:请求的可预测性,比如请求的参数可知或可穷举,比如请求的规律性 3)case: 用户身份凭证 cookie 3.1)session cookie, 跟随浏览器的生命周期,浏览器不关闭就可以跨页面存在 3.2)第三方cookie,特点就是有过期时间,一些跨域操作会禁止第三方的cookie进行传递 3.3)P3P头,能够允许一个跨域请求携带第三方cookie,由于浏览器业务的不断丰富,这种需求也是越来越多,随着第三方cookie的广泛使用,以及安全性不断降低,风险也随之而来 4)跨站点请求伪造并不是能够通过post简单避免,用户如果处于登录的情况下,拦截到了用户的cookie,也能够模拟出post请求来进行入侵.例子与flash post漏洞、csrf蠕虫、百度短消息漏洞 5、csrf防御 5.1)验证码,简介有效的方法,但是新特性 5.2)referer check,通过查看固定referer进行限制,但是一些条件下,referer无法被传递 5.3) anti csrf token: 通过一个随机的token无规则可循,能够大大减少攻击者获取用户凭证的可能 6、token设计的原则 6.1)不可预测性,足够随机 6.2)保证其有效性,不能让真正的用户也无法进行操作 6.3)保证其保密性,只有不可知才是最大的安全 7、点击劫持 1)通过交互,能够利用一个随机浮动的iframe劫持用户操作,在用户不知情的情况发出请求 2)flash点击劫持,通过设计一款简单的游戏,能够将用户的页面数据通过一个透明iframe将用户数据窃取 3)图片覆盖攻击:通过页面图片没有固定,修改图片的style,让其覆盖页面的任意位置,进行点击劫持,例如一些图片上修改联系电话的上当用户比较多 4)拖拽劫持&数据窃取:页面拖拽是当下便利的操作,但是新的特性不受浏览器同源策略的限制,因而能够通过拖拽入透明Iframe而进行数据窃取 5)触屏劫持,是通过一个透明iframe劫持用户的触屏操作 8、预防点击劫持 1)禁止跨域iframe 2)禁止iframe嵌套 3)frame busting 4)x-frame-options,可以进行禁止、或者允许同源域名、或者允许指定域名地址页面 9、html5安全 1)由于h5的新特性的更新,对之而来的安全性也需要不断更新 1.1)新标签列表,更新xss filter的标签列表 1.2)iframe sandbox特性,只允许操作和请求仅在iframe内部 1.3)link_types noreferer特性 ,如果标签指定noreferer,则不受referer安全限制 1.4)canvas特性 能够允许在浏览器页面生成一块画布,攻击者能够轻松拷贝验证码图片,扔到后端进行识别比对,验证码的安全性就大大降低 1.5)cross origin resource sharing特性 允许跨域请求 1.6)postMessage 跨窗口传递消息特性,使得跨窗口playload更为灵活 1.7)web storage:包含session storage & local storage,受到同源策略约束,每个域都是独立的,身份信息的安全性也得到了保障
Featured Tags
工具类
XML
JAVA
Java
Mybatis
反射
代理模式
日志
工厂方法模式
装饰器模式
结果集映射
Web
RESTful
WebAPI规范
SQL
Redis
Jira
SynapseRT
有限状态机 State Machine
statemachine
SpringBoot
IDEA
Tomcat
Vue
Docker
Springboot
Apache Ignite
项目发布与调试
白帽子讲web安全
黑名单
通用化
企业中台实践
MacOS
docker
minio
springboot
分布式存储
Postgres
数据备份
数据恢复
K8S
抖音小程序
开发实践
SpringCloud
Skywalking
Nacos
Kubernetes
Secret
ConfigMap
Git
GitOps
云原生
RocketMQ
ActiveMQ-Artemis
ClickHouse
Kamailio
sipp
Homer
heplify
heplify-server
HEP