xss简介

xss攻击者构造恶意信息然后在用户的浏览器上执行,主要分为反射性xss,这种主要是某个页面存在有漏洞的参数,然后填上恶意参数把整个链接发给用户或者管理员,他们点击了带有恶意参数的链接就会执行恶意代码,可能会造成cookie泄露以及浏览器保存的各种重要数据的泄露等,也可能会冒充用户身份进行非法操作。还有存储型xss,就是用户可以自己构造信息并且会被显示在页面上面,比如发表评论就是会被存在数据库中,然后其他用户也能看到你发的评论信息,或者你的个人信息,也会被保存同时别人也能看到这些信息,要是没有对用户输入进行过滤或者编码转义等操作,那用户可以构造任意js代码并且任何浏览这个页面的用户都会中招。还有就是dom型xss,这个特点是不会经过网站服务器,是直接浏览器执行恶意的xss代码。

xss绕过

xss防护的最好办法就是编码,你输入的尖括号就实体编码,就基本没法构造标签了(特殊情况除外,比如svg标签外),又或者输出的值在value等属性里,那就对引号进行url编码操作,又或者直接进行白名单过滤,只允许数字字母和短横线,这些方法都是比较粗暴简单也是比较安全的,当然在有些业务需求下面并不适用,有的时候会需要输入特殊符号,那就只能进行严格的黑名单过滤,这种的话一定要把所有危险的字符串都过滤掉才行。

有的网站开发者并不清楚自己是否过滤了所有可能的危险字符,就直接使用waf,比如安全狗,当然这也不是完全安全的,存在很多绕过方法,比如双写大小写(实战基本用不到),使用其他标签(黑名单不一定能过滤完),以及利用特殊属性或者事件下的编码绕过等。比如<object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg=="></object>,编码不是任何地方都能用,因为浏览器解析的顺序是:html对服务器相应的二进制数据进行解析产生html源代码,然后根据源代码产生dom树,此时实体编码的数据是无法被识别的(实体编码防护xss的原理),然后html解析器根据dom树来进行下一步解析工作,解析<script>等标签,在处理标签内部信息以及src,href等属性时,若是js伪协议则会出发js解析器进行解析,因此编码绕过要看内容被输出的环境来利用。

最新文章

  1. 东哥读书小记 之 《MacTalk人生元编程》
  2. Asp.net 面向接口可扩展框架之核心容器(含测试代码下载)
  3. zoj 1788 Quad Trees
  4. javascrit2.0完全参考手册(第二版) 第2章第4节 基本的数据类型
  5. 把一个SVN项目的目录结构 导入到另外一个空白的SVN项目里
  6. 编译libcore-amr静态库
  7. IOS plist轻量级操作
  8. css3 display:box
  9. NPOI封装
  10. IOS学习之路十九(JSON与Arrays 或者 Dictionaries相互转换)
  11. Chrome 里的请求报错 &quot;CAUTION: Provisional headers are shown&quot; 是什么意思?
  12. Drools+springboot
  13. 九度1456胜利大逃亡【BFS】
  14. vue-cli 如何打包上线
  15. MT【27】对数方程组求范围
  16. django-分页paginator
  17. python学习笔记——git的安装及使用
  18. js 实现数组元素交换位置
  19. ROS知识(9)----NodeHandle命令空间问题
  20. c++第二十九天

热门文章

  1. 经典01背包问题(C++)--详解
  2. AI听曲识歌!哼曲、口哨吹,都能秒识! ⛵
  3. python 二分法查找字典中指定项第一次出现的索引
  4. Linux配置bond模式 双网卡绑定步骤
  5. C#/.NET/.NET Core优秀项目框架推荐
  6. limits.conf 配置不生效问题排查
  7. KingbaseES R6 手工创建主备流复制案例
  8. KingbaseES R6 集群主机锁冲突导致的主备切换案例
  9. mysql explain总结
  10. 使用Metricbeat监控zookeeper遇到的问题