Web前端 安全须知 拔赤

3,107 views

Published on

Published in: Technology
0 Comments
22 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,107
On SlideShare
0
From Embeds
0
Number of Embeds
90
Actions
Shares
0
Downloads
121
Comments
0
Likes
22
Embeds 0
No embeds

No notes for slide

Web前端 安全须知 拔赤

  1. 1. 前端安全须知拔赤 bachi@taobao.com 2010-02-26
  2. 2. 网络安全web前端安全Javascript安全须知
  3. 3. 网络安全web前端安全Javascript安全须知
  4. 4. 网络安全机密性(加密)完整性(防伪造)来源可靠性(签名)程序漏洞
  5. 5. 网络安全web前端安全Javascript安全须知
  6. 6. Web前端安全XSS Cross Site Script(跨站攻击脚本)CSRF: Cross Site Request Forgery(跨站伪造请求)
  7. 7. XSS
  8. 8. XSS 往Web页面里插入恶意html代码 当用户浏览该页之时,嵌入其中Web里面的 html代码会被执行
  9. 9. XSS 恶意html/js脚本 程序漏洞 Hack.run() Web page
  10. 10. XSS的种类基于DOM的XSS非持久性XSS持久性XSS基于字符集的XSS基于flash的跨站Self-inflicted(自己造成的) XSS未经验证的跳转构成的跨站Cookie构成的跨站Escape-based XSS
  11. 11. XSS-基于DOM的XSS 产生原因 当web page含有一些不受服务器端控制的DOM 的时候发生 通过form、referer、location修改页面DOM 解决方法 避免客户端的脚本对DOM的重写、重定向及其 它敏感的操作,需要在客户端对form输入进行 过滤
  12. 12. 可被攻击者利用的脚本URL相关操作document.location=…document.location.hostname=…document.location.replace(…)document.location.assign(…)document.URL=…document.referrerdocument.URLUnencodedwindow.navigate(…)window.location直接运行脚本eval(…)window.execScript(…)window.setInterval(…)window.setTimeout(…)
  13. 13. 直接写入html代码document.write(…)document.writeln(…)document.body.innerHtml=…直接修改DOMdocument.forms[0].action=…document.attachEvent(…)document.create…(…)document.execCommand(…)document.bodywindow.attachEvent(…) 打开或修改窗口document.open(…)window.open(…)window.location.href=…
  14. 14. XSS-非持久性跨站产生原因 直接将form或者query(cookie)中的字符带入到 页面中,危险query字符参与html的构成 (query字符并不被存储)解决方法 对输入进行过滤 对输出进行编码
  15. 15. XSS-持久性跨站 产生原因 其破坏页面html结构的原理和非持久XSS一 样,只是危险脚本来源不是query字符,而是 数据库数据 解决办法 对输入进行过滤 对输出进行编码
  16. 16. XSS-基于字符集的跨站产生原因 页面字符集不固定,用户输入非期望字符集的 字符,有时会绕过前端的过滤解决办法 Web页面一定要指定字符集(GBK) XML中不仅要指定字符集,而且标签要闭合
  17. 17. XSS-基于flash的跨站 产生原因 As脚本可以接受用户输入并操作cookie,攻 击者可以配合其他XSS方法将恶意swf文件嵌入 页面中 解决办法 严格管理cookie的读写权限 对flash能接受的用户输入进行过滤和限定
  18. 18. XSS- Self-inflicted XSS 产生原因 攻击者先把页面搞出漏洞,让其他用户再浏览 这个有漏洞的页面的时候遭受攻击。 这里已经不是严格意义上的XSS了 解决方法 页面登录超时
  19. 19. XSS-未经验证的跳转构成的跨站产生原因 如果服务器端做302跳转,跳转的地址来自用 户的输入,攻击者可以输入一个恶意的跳转地 址来执行脚本。解决方法 在后端来限定所接收的URL来自淘宝并做过滤
  20. 20. XSS-Cookie构成的跨站 产生原因 破坏页面结构的原理和非持久跨站一致 Js或as可操作cookie,通过cookies提交query 解决办法 一切来自客户端的cookie是不可信的,后端必 须对客户端cookie做验证
  21. 21. XSS- Escape-based XSS 产生原因 其破坏页面语义构成的原理和非持久XSS一致 使用畸形的UTF8字符串拼成URL 解决方法 对输入进行过滤 对输出进行编码
  22. 22. CSRF
  23. 23. CSRF (通过肉鸡)伪造请求
  24. 24. CSRF的发生 所有需要登录页面中的交互 表单提交 AJAX
  25. 25. CSRF的防范 临时签名(验证码、时间戳) crumb
  26. 26. 淘宝对CSRF的防范 在表单中指定token<input type=”hidden” value=”{$token}” name="_tb_token_"> 在cookie中指定_tb_token_ 尽量使用POST方法 Ajax时附带token
  27. 27. 网络安全web前端安全Javascript安全须知
  28. 28. Javascript安全须知 禁止使用外部引用的js,外链应当完全使用a. tbcdn.cn上的资源文件 慎用eval,setTimeout,setInterval和从不可信站点获 取的字符串操作的函数。 cookies操作一定要征询后端工程师的意见,避 免撑破cookies的大小限制了。 前端代码禁止获取referer,所有referer的操作 由后端工程师处理。
  29. 29. Javascript安全须知 续 禁止发送页面相关信息到第三方站点 如果JSON返回的信息里含有用户的私密信息, 需要加_tb_token_ 禁止使用script标签来达到跨域访问的目的,应 当使用flash实现跨域访问,可信域之间的跨域 可以使用iframe 所有使用的数据必须经过服务端的验证。 js代码需要经过jslint的测试
  30. 30. 我们还需要安全规范页面级的html规范/标准 统一的编码标准(URL/GBK/js unicode) 标签完整性代码级的coding规范 统一的ajax接口规格 页面中php/jsp和js代码的参数传递 规范的javascript编写习惯代码review制度
  31. 31. Q&A

×