Your SlideShare is downloading. ×
0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
第四节课:web安全2.0
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

第四节课:web安全2.0

4,080

Published on

Published in: Education, Technology, Design
2 Comments
3 Likes
Statistics
Notes
No Downloads
Views
Total Views
4,080
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
160
Comments
2
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. WEB 安全 2.0 Email : [email_address] coolui
  • 2. WEB 安全的危害性 <ul><li>谈谈你平时遇到和看到的 web 安全问题? </li></ul><ul><li>平时开发过程中有没有考虑过安全问题? </li></ul>
  • 3. WEB 安全 <ul><li>有哪些常见的 web 安全类型: </li></ul><ul><ul><li>信息欺骗 </li></ul></ul><ul><ul><li>隐私信息泄露 </li></ul></ul><ul><ul><li>XSS </li></ul></ul><ul><ul><li>CSRF </li></ul></ul><ul><ul><li>Cross Iframe Trick </li></ul></ul><ul><ul><li>ClickJacking </li></ul></ul><ul><ul><li>SQL 注入 </li></ul></ul><ul><ul><li>文件上传 </li></ul></ul>
  • 4.  
  • 5. 信息欺骗 <ul><li>用户界面( UI )欺骗 </li></ul>
  • 6. 信息欺骗 <ul><li>HTTP Referer 字段的欺骗 </li></ul><ul><ul><li>开发人员使用 Referer 字段值阻止其他网站引用他们网站的图片文件,或者阻止第三方服务器向他们服务器的脚本程序提交 HTML 表单数据。 </li></ul></ul><ul><ul><li>但是 Referer 却可以被攻击者很容易的伪造。 </li></ul></ul>
  • 7. 信息欺骗 <ul><li>同形异义字的欺骗 </li></ul><ul><li>例如,用户名“ com” ,其中“ c” 和“ o” 为拉丁字母。但是使用俄语的西里尔字母表示“ c” 和“ o” ,它们看起来和拉丁文字符长的一样,但是完全不是同一个字符。所以 passport 后台判断不重名,是允许注册的。 </li></ul>
  • 8. 信息欺骗 <ul><li>URL 页面重定向欺骗 </li></ul><ul><li>http://www.baidu.com/baidu.php?url= RedirectURL </li></ul>
  • 9.  
  • 10. 隐私泄露 <ul><li>以前通过下面接口可以获取任何私信消息: </li></ul><ul><li>http://msg.baidu.com/?cm=AcViewContent&ct=113000&op=6&tn=bmMessage&mid=275351318&qid=0&srcmid=275350905&re=0&rid=1&un=sv008&nocache=0.28658272071011925 </li></ul>
  • 11. 隐私泄露 <ul><li>通过下面空间的接口可以获取到任何人的好友: </li></ul><ul><li>http://frd.baidu.com/?ct=28&un=coolui&cm=FriList&tn=bmABCFriList&callback=gotfriends </li></ul>
  • 12. 隐私泄露 <ul><li>错误提示:过多信息暴露 </li></ul>
  • 13. 隐私泄露 <ul><li>错误提示:过多信息暴露 </li></ul>
  • 14.  
  • 15. XSS <ul><li>什么是 XSS ? </li></ul><ul><ul><li>XSS ( Cross Site Script )跨站脚本攻击,是指攻击者利用站点的安全漏洞往 Web 页面里插入恶意 html 代码或 JS 脚本。 </li></ul></ul><ul><ul><li>因为这种攻击是通过别人的网站脚本漏洞达到攻击的效果,就是说可以隐藏攻击者的身份,因此叫做跨站攻击。 </li></ul></ul>
  • 16. XSS <ul><li>XSS 漏洞攻击的分类: </li></ul><ul><ul><li>( 1 )非持久性 XSS </li></ul></ul><ul><ul><li>( 2 )持久性 XSS </li></ul></ul>
  • 17. XSS <ul><li>XSS 攻击方法 1 :万恶的 document.write + document.location.href </li></ul>
  • 18. XSS <ul><li>XSS 的攻击方法 2 :模板中变量未进行合理字符转义 </li></ul><ul><ul><li>1 、没有过滤 </script> </li></ul></ul><ul><ul><li>2 、没有过滤 */ 或者 /* :不要在注释中留有代码 </li></ul></ul>
  • 19. XSS <ul><li>XSS 的攻击方法 3 :通过输入半个汉字来构造 </li></ul>■ &quot;alert('cookie'); 经转义 ■ &quot;alert('cookie'); <script> var _title = &quot; $title &quot;; ... </script> <script> var _title = &quot; ? &quot;alert('cookie'); &quot;; ... </script>
  • 20. XSS <ul><li>XSS 的攻击方法 4 :富编辑导致的漏洞 </li></ul><ul><ul><li>一般富编辑中需要进行如下处理: </li></ul></ul><ul><li>标签的转义: <script> 、 <style> 等等 </li></ul><ul><li>关键词的过滤: javascript 、 exepression </li></ul><ul><li>标签属性的过滤: </li></ul><ul><li>onload 、 onerror 、 onmousemove 、 onmouseout 、 onmouseover 、 onmouseup 、 onmouseenter 、 onmouseleave 、 onmousewheel 、 onscroll </li></ul><ul><ul><li>实例 </li></ul></ul><ul><li>style=&quot;top:expression(alert('XSS'));&quot; </li></ul><ul><li>style=&quot;background:url(javascript:alert('XSS'));&quot; </li></ul>
  • 21. XSS <ul><li>XSS 的攻击方法 5 : CSS 自定义导致的漏洞攻击 </li></ul><ul><li>引入脚本的一般方法包括: </li></ul><ul><ul><li>div{background:url(javascript:alert(0))}; </li></ul></ul><ul><ul><li>div{background:url(vbscript:alert(0))}; </li></ul></ul><ul><ul><li>div{background:expression(alert(0))}; </li></ul></ul><ul><ul><li>通过 @import 引入一个外部的 css 文件, 该文件中包含有上述引入恶意 js 的代码。 </li></ul></ul>
  • 22. XSS <ul><li>XSS 的攻击方法 6 :通过字符集编码来构造 </li></ul><ul><li>攻击者可以通过上传如下代码的 CSS 文件: </li></ul><ul><ul><li>@charset &quot;utf-7&quot;; </li></ul></ul><ul><ul><li>a{80sec:expre/+ACoAKg-/ssion(if(!window.x){alert(/xxx/);window.x=1})} </li></ul></ul><ul><li>漏洞原因: </li></ul><ul><li>@charset “utf-7”; 表明了 css 代码的编码格式为 utf-7 ,而根据 utf-7 的编码规则,是由 “ +” 开始, “ -” 结束的一堆代码( - 结尾非必要)。 </li></ul><ul><li>那么 +ACoAKg-  即 utf-7 编码格式,经由浏览器转换成 gbk 之后,就变成了   ** ,即原来的   /+ACoAKg-/ 变成了 /**/ 也就是普通的 css 注释了, xss 自然就发生了。 </li></ul>
  • 23. XSS <ul><li>XSS 的攻击方法 总结 </li></ul><ul><li>大家回忆一下 XSS 有哪些攻击方法。 </li></ul>
  • 24.  
  • 25. CSRF <ul><li>什么是 CSRF 攻击 </li></ul><ul><li>CSRF 是伪造客户端请求的一种攻击, CSRF 的英文全称是 Cross Site Request Forgery 。 </li></ul><ul><li>字面上的意思是跨站点伪造请求。直白一点讲: “ 借”用你的 session 来完成一些对于你来说是恐怖的事 —— “转帐”等 权限 提交操作。 </li></ul>
  • 26. CSRF <ul><li>CSRF 攻击的分类 </li></ul><ul><ul><li>CSRF 站内攻击 </li></ul></ul><ul><ul><li>CSRF 站外攻击 </li></ul></ul>
  • 27. CSRF <ul><li>CSRF 的实例 1 :站内自动退出 </li></ul><ul><li>一般 passport 退出是一个 get 请求: </li></ul><ul><li>https://passport.baidu.com/logout </li></ul><ul><li>如果在贴吧内发一个图片的贴子,图片的 src 就指向上面的 url 。那么每个登陆的用户打开这个特殊的贴子之后就会自动掉线。 </li></ul><ul><li>为什么会这样? </li></ul>
  • 28. CSRF <ul><li>CSRF 的实例 2 :私信的 CSRF 漏洞 </li></ul><ul><li>发私信是 post 提交,需要登陆情况下,但是没有验证码!在百度身份认证模式下就可以导致站外的 CSRF 攻击:即攻击者在自己的站点创建一个 PHP 文件来构造私信的表单提交。 </li></ul>
  • 29. CSRF <ul><li>为什么会导致 CSRF 漏洞 </li></ul><ul><li>1 、百度 sessionID 是保存在 baidu.com 域名下的 cookie 信息。 </li></ul><ul><li>2 、 P3P 协议导致 cookie 可以跨域传递。 ff 是允许 cookie 跨域传递。 </li></ul>
  • 30.  
  • 31. Cross Iframe Trick <ul><li>Cross Iframe Trick 是什么? </li></ul><ul><li>什么是 cross iframe ,简单来说就是把 iframe 做一个迭代,以实现一些 iframe 之间的交叉数据访问。在正常的 web 应用中,许多地方都有用到这种技术,比如 facebook ,比如 yahoo 。 </li></ul><ul><li>cross iframe Trick 就是通过 iframe 的实现技术漏洞导致的攻击。 </li></ul>
  • 32. Cross Iframe Trick <ul><li>实例 1 :利用同域下两个 iframe 可以互通来进行攻击 </li></ul>A : 1.html ( XSS 漏洞 ) B : 2.html A 域名下的 1.html 页面存在 XSS 漏洞 怎么来攻击 B 域名下的 2.html 了? 如果 B 域名下也存在一个有 XSS 漏洞的 页面 *.html ,这就好办了。 在 1.html 页面构造一个隐藏的 iframe , 指向 *.html 页面,通过 *.html 来调用 2.html
  • 33. Cross Iframe Trick <ul><li>实例 2 :利用 iframe proxy 来攻击 </li></ul>A : 1.html B : 2.html A 站点的 1.html 页面正常 嵌套的 B 站点 2.html 页面被攻击者控制 A 站点下可以找到一个存在 XSS 的页面 那么攻击成为了现实! <ul><li>假象 A 站点为百度, B 站点为联盟网站 </li></ul><ul><li>通过 B 站点很容易执行 A 站点 1.html 页面代码 </li></ul>A : *.html
  • 34. Cross Iframe Trick <ul><li>实例 3 : document.domain 通信导致的漏洞 </li></ul>
  • 35.  
  • 36. WEB 安全漏洞攻击方法 - ClickJacking <ul><li>ClickJacking :点击劫持 </li></ul><ul><li>演示: http://fe.baidu.com/doc/websafe/demo/clickjacking-demo1.html </li></ul>
  • 37.  
  • 38. WEB 安全漏洞攻击方法 – SQL 注入 <ul><li>SQL 注入 实例 </li></ul><ul><li>经典的万能密码 : OR ‘’ = ‘’ </li></ul><ul><li>admin1=request(&quot;admin&quot;) password1=request(&quot;password&quot;) </li></ul><ul><li>set rs=server.CreateObject(&quot;ADODB.RecordSet&quot;) </li></ul><ul><li>rs.open &quot;select * from admin where admin='&quot; & admin1 & &quot;' and password='&quot;& password1 &&quot;'&quot;,conn,1 </li></ul><ul><li>在用户名和密码那里都填入: ‘ OR ’’=’ 。 SQL 语句被构造成: </li></ul><ul><li>select * from admin where admin=’’ OR ’’=’’ and password=’’ OR ’’=’’ </li></ul>
  • 39.  
  • 40. WEB 安全漏洞攻击方法 – 文件上传 <ul><li>远程文件上传和加载 </li></ul><ul><li>最直接的例子:图片上传功能,如果文件名后缀不进行任何的判断,则攻击者可能上传一个 PHP 文件,然后通过该 PHP 文件来操作服务器的其他有用资源。 </li></ul>
  • 41. WEB 安全漏洞攻击方法 - 总结 <ul><li>大家一起回顾一下刚才将的几种漏洞攻击方法? </li></ul>
  • 42. WEB 安全编码规范 <ul><li>随着百度 C2C 、 IM 产品线的推出, web 安全显得越来越重要。 </li></ul><ul><li>我们怎么正确设计和编码,来避免出现以上的各种安全漏洞了?我们接着往下看。 </li></ul>
  • 43. WEB 安全编码规范 <ul><li>正确的字符转义 - 可以杜绝绝大部分 XSS 漏洞 </li></ul><ul><li>所有的数据都不可信任:获取的数据在页面展示需要进行相应转义。 </li></ul><ul><li>1 、 HTML 转义; </li></ul><ul><li>2 、 JavaScript 转义; </li></ul><ul><li>3 、复合转义:先 HTML 转义,再 JavaScript 转义; </li></ul><ul><li>4 、复合转义:先 JavaScript 转义,再 HTML 转义; </li></ul><ul><li>5 、 URL 转义; </li></ul>
  • 44. WEB 安全编码规范 <ul><li>规范的字符编码 和处理 - 可以杜绝绝大部分 XSS 漏洞 </li></ul><ul><li>1 、 新产品线尽量使用 UTF-8 ,避免出现很多编码问题,例如半个汉字的问题 </li></ul><ul><li>  </li></ul><ul><li>2 、 对用户输入的半个汉字进行扫描和过滤处理。 </li></ul><ul><li>3 、对 GBK 编码集区域进行统一规定,不要多个产品线不同的策略,不然容易导致问题。 </li></ul>
  • 45. WEB 安全编码规范 <ul><li>提交操作的规范 </li></ul><ul><ul><li>1 、尽量使用 POST 提交。 </li></ul></ul><ul><ul><li>2 、必要时添加 refer 检查 – 白名单 。 </li></ul></ul><ul><ul><li>3 、 Form 表单提交都需要添加图形验证码 </li></ul></ul><ul><ul><li>4 、使用与用户身份绑定和时间唯一性的 token </li></ul></ul><ul><ul><li>5 、尽量不要滥用 P3P 协议 </li></ul></ul>
  • 46. WEB 安全编码规范 <ul><li>富编辑和开放 CSS 的过滤规范 </li></ul><ul><li>白名单原则: </li></ul><ul><ul><li>规范富编辑中只允许的标签 </li></ul></ul><ul><ul><li>规定标签中只允许的属性 </li></ul></ul><ul><li>抛弃和限制策略,而非过滤: </li></ul><ul><ul><li>在属性中发现 javascript 、 vbscript 、 expression 等关键词直接抛弃 </li></ul></ul><ul><ul><li>发现 onload 、 onerror 、 onmousemove 等不允许属性直接抛弃 </li></ul></ul>
  • 47. WEB 安全编码规范 <ul><li>Iframe 进行通信 的规范使用 </li></ul><ul><li>1 、不能嵌套随意页面 </li></ul><ul><li>  </li></ul><ul><li>2 、谨慎使用 document.domain 方案来解决主域名和子域名之间通信:可以使用一个与主域名同域的静态文件跳转来解决。 </li></ul>
  • 48. WEB 安全编码规范 <ul><li>SQL 语句拼接的字符检测规范 </li></ul><ul><li>1 、尽量使用函数支持的 sql 语句编写方法 </li></ul><ul><li>2 、如果确实需要拼接来写 sql 语句,则对用户可输入的参数进行严格的统一检查和转义。 </li></ul><ul><li>SQL 是完全可以杜绝的。只要遵守检查和转义规范。 </li></ul>
  • 49. WEB 安全编码规范 <ul><li>Passport 统一认证的安全升级 </li></ul><ul><li>思想:将各个产品线的 sessionID 放到各自的产品线子域名下。做到产品线之间的安全隔离 </li></ul>
  • 50. WEB 安全编码规范 – 总结 <ul><li>有谁能总结一下刚才讲的安全编码规范有哪些?它们都能解决哪些介绍的漏洞攻击?(大家讨论) </li></ul>
  • 51. 谢谢! <ul><li>Q&A </li></ul>

×