- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
客户端防御xss.ppt
客户端消灭XSS攻击 王智勇 XSS攻击可以用来做什么? 传统的服务端xss防御 常见XSS利用方法 1./script或者/stylede等标签闭合当前脚本,然后输入自定义内容。 2.根据JS或css上下文,构造正确的闭合。 传统的服务端xss防御 输入过滤: 过滤关键字script,alert,document.cookie 过滤特殊字符/\\u%0a等 长度限制,内容限制 净化输出: 对输出内容做html编码等 传统的服务端xss防御 缺陷: 1.易被绕过: 新的与废弃标签(html5) 多种编码(unescape,base64,url,html实体编码) 提交位置不同(url,post(两种),refer,ua) 浏览器缺陷(差异性与解析bug) 2.对基于dom的xss攻击无能为力 基于客户端的xss防御 思考: xss(csrf)的原理: 攻击客户端,在客户端执行恶意脚本 防御方法: 在恶意脚本执行前,执行基于防御的脚本,来阻止恶意脚本执行。 基于客户端的xss防御 思路: Preventing XSS with Data Binding by Stefano Di Paola 2006 (数据绑定) ACS By Eduardo Vela 2009(动态内容签名,沙箱) Locking the Throne Room 2011 (利用ECMAScript5来锁定对特殊内容或对象的访问权限) JSReg (Javascript解析) JSLR 2012(为标签与属性添加随机Token) 基于客户端的xss防御 思想: 使浏览器了解哪些内容是正常的,来自于应用程序生成 哪些内容是有害的,在生成新的页面前消除,并阻止恶意脚本访问某些敏感对象。 关键技术点: plaintext标签:使html渲染无效化 onload或DOMContentLoaded:在dom加载事件发生后执行基于防护的脚本 解析DOM 对DOM元素进行过滤和重组,净化恶意脚本内容 基于客户端的xss防御 参数绑定: 在plaintext标签下保存所提交的参数名值对 在DOM加载完成后立即调用该事件处理器,将危险标签元素与文本元素内容送到指定文件进行解析处理,最后将净化后的内容返回给浏览器。 基于客户端的xss防御 基于客户端的xss防御 基于客户端的xss防御 ACS(Active Content Signatures) 三类沙箱 JSReg HTMLParser CSSParser 基于客户端的xss防御 优势: 易于部署,不需要客户端安装额外插件等 以下为在mod_security中添加针对ACS的支持 SecContentInjection On SecRule RESPONSE_CONTENT_TYPE ^text/html phase:4,t:none,nolog,prepend:htmlheadscript type=\text/javascript\ src=\/acs.js\/scriptscript type=\text/javascript\ src=\/xss.js\/script 功能强大: ACS2.0添加了白名单,强制加密等功能 基于客户端的xss防御 基于客户端的xss防御 Locking_the_throneroom 利用DOM,通过重载javascript的函数来阻止访问危险对象 __defineGetter__() script document.__defineGetter__(cookie,function(){ alert(no cookie access); return false; }) /scirpt ... scriptalert(document.cookie)/script 基于客户端的xss防御 问题: IE不支持 可以简单bypass(delete操作符,同样被重载等) Bypass: script delete document.cookie; alert(docment.cookie); /scirpt 基于客户端的xss防御 利用ECMA Script5 对象扩展: Object.freeze()//使得所有属性变成只读,同时防止新添属性或删除属性 Object.seal() //对象现在有seal()方法(防止添加新的属性和删除既有属性) Object.defineProperty()/Object.defineProperties() Object.preventExtensions()//组织向对象添加新的原型属性 script Object.defineProperty(document,cookie,{ get:function(){return false} se
文档评论(0)