XSS 总结 调研 介绍.docx_第1页
XSS 总结 调研 介绍.docx_第2页
XSS 总结 调研 介绍.docx_第3页
XSS 总结 调研 介绍.docx_第4页
XSS 总结 调研 介绍.docx_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

XSS检测与防范总结XSS全称:跨站脚本攻击(Cross Site Scripting)简单概括:往页面插入恶意脚本百度百科定义:恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的优点:漏洞无处不在缺点:1、 属于被动攻击,攻击时间长且不确定2、 没有自动化的攻击工具危害性:1、 获取cookie (若cookie加入了httponly则无法获取)2、 模拟请求3、 发评论、发微薄、发广告、刷投票、获取私人信息、聊天内容等;根据网站功能不一样,而能做不同的事情更恶意的:获取私人信息 + 社会工程学 :获取密码,尝试邮箱、QQ、支付宝等攻击注册或登录页面,获取甚至修改用户密码蠕虫,通过被攻击者去发起攻击,让更多用户受攻击挂马、DDos . 等攻击的位置:1、 所有用户输入的地方(任何input 输入框、编辑信息、发送评论、上传图片等)2、 请求服务器时 url 所带参数(2实际上包括了1,因为用户输入 最后也是通过请求发送到服务器,关键在于 是否经过过滤 或 其他处理才输出)攻击分类:1、 将带有攻击脚本的url 发给被攻击者,欺骗其点击(此url 可以是 经过编码 或者 转换为短链,从而无法看出里面带有攻击脚本)2、 将攻击脚本存到服务器(如:编辑自己的个人信息 或 发送带脚本的评论、文章,若有漏洞没过滤)受攻击者:用户(当用户浏览你的信息或评论、文章时就会被攻击) 网站管理员(当管理员点击管理你的用户时被攻击)检测XSS漏洞方法:在页面插入脚本,若脚本能运行,则表明有漏洞通常可以通过 alert 弹框来判断常用检测方式:alert(XSS)scriptalert(1)/scriptalert(String.fromCharCode(88,83,83)“!-“ onmousermove=”alert(1)“ onblur=”alert(1)“ onclick=”alert(1)alert(1)Javascript:alert(1)aaaaaaaaaaaaaaaaIframe embed 里的 src 同 a 里的 href特殊检测方式:1、 base64将攻击代码进行 base64_encode 后插入到 html 属性里目前只发现以下四种方式可以执行 base64_encode 的代码:(1)、(2)、(3)、(4)、 (必须带上 HTTP-EQUIV=refresh )2、 vbscript: 跟javascript:类似,但只能在IE10及IE10以下执行,不能在非IE下执行aaaaa3、 直接将攻击脚本写到文件或页面里,然后把url赋过去aaaaaaa攻击代码在xss.html里4、 flash 攻击攻击代码在xss.swf里5、 UTF-7编码(只有IE支持)+ADw-SCRIPT+AD4-alert(XSS);+ADw-/SCRIPT+AD4-6、 data:(包括第一种 base64_encode 里使用的攻击方法)同第一种类似,但不需要encode另外,将第一种方法里所有base64_decode后并去掉逗号前的base64就可以执行了a href=data:text/html;, alert(2)aaaaaaaaaa但base64_decode后会需要用到7、 style expression(只在IE7或IE7以下有效)防范方法:(以下的过滤是指转换编码,要记住尽量保持用户原本输入不变,只是让其不能执行)1、 过滤 “ &(分别转换为 " < > & )2、 在view里对 href 和 src 进行特殊处理过滤掉“/s*javascript:/i” 为 “javatscript:”“/s*vbscript:/i” 为 “/vbtscript:/”“/s*data:s*(;*;)*base64,/i” 为 “/datta:()base64,/”甚至直接把 “/s*data:/i” 过滤为 “/datta:/”用脚本检测,若view里出现 赋数据到 href 或 src 却没使用 href_filter,则报警3、 指定属性黑名单将所有事情属性(onerror、onclick、onmousemove、onload、onblur等等)全部列入黑名单4、 不允许直接在标签里 将数据没经过滤直接赋值到 js 变量如禁止:Var haha = 5、 重要的cookie设置为httponly6、 其他任何情况,不要在controller 和 model 里进行过滤;view 里也只允许 href 和 src 进行特殊过滤;其他任何的多余过滤都会造成过度过滤如能做到以上6点,已经能过滤掉97% 98%左右的漏洞了;对于 style 里的 expression 可以先不考虑,因为这个只支持ie7以下对于 meta 里的 content 也可以暂时不考虑,因为这个要求必须是 HTTP-EQUIV=refresh对于上面防范措施的第一点:使用以下函数即可做到Function filter_html($value)Return htmlentites($value, ENT_QUOTES, UTF-8);注:htmlspecialchar 与 htmlentitles 的区别:当第三个参数没有赋编码时,htmlentitles过滤中文时会出现乱码,而htmlspecialchar 只过滤第一点所说的5个特殊字符,所以不会出现乱码;但当指定编码后,暂时没发现两者有差异在客户端 js 引起的问题:当经过上面 filter_html 过滤后,特殊字符会转换为 html 编码,能正常显示但不会被执行;可是当用 js 取出这些数据到变量后,它会被还原为正常字符,相当于转换失效js取数据方法不同的结果:(1)、 $(xxx).html() ,则取出来的数据为filter 后的数据(但是引号被还原了,即引号相当于没过滤)(2)、 $(xxx).text() ,则取出来的数据相当于没有 filter的数据(3)、 $(xxx).attr(attr_name) ,则取出来的数据相当于没有 filter的数据(4)、 $(xxx).val() ,则取出来的数据相当于没有 filter的数据(5)、 $.ajax $.get $.post $.getJson ,则取出来的数据为filter 后的数据若js 里使用了第2第3种方法取数据然后插入到页面里,则 XSS 能攻击成功解决方案: 用js将数据输出到页面时,在js进行filter过度过滤问题:1、 若只是展示在页面,则不会有数据被过度过滤因为过滤只是将原数据转换为使用 html 编码,所以在 html页面展示时都能正常展示2、 过度过滤的情况会发生在:用js取出的数据为filter 后的数据,然后ajax 请求时带上该数据(用表单提交不会出现过度过滤,提交的是 过滤后又被还原的数据)解决方案: Ajax请求前,将所有数据 反过滤缺点: 如:若用户本身输入的数据为”&”,然后js取的数据为相当于没有filter的数据,结果反过滤后,数据就变成”&”,有可能会出现过度反过滤对于 Js 引起的问题 以及 php端convertData 和 过度过滤问题的处理:可以有两种方案:方案一:1、 php端convertData时对数据进行过滤2、 js 渲染页面,无论是 直接插入数据到页面 还是 使用模板插入数据,都 不进行过滤3、 重新封装一套 js 从页面取数据的方法,取数据时进行过滤4、 重新封装 isappAjax,在发送请求时,对数据进行反过滤方案二:1、 php端convertData时不对数据进

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论