Upload
xiaomogu11
View
219
Download
1
Embed Size (px)
DESCRIPTION
Web安全
Citation preview
Web 安全银翘
2014-07-07
主要内容
• 关于安全• 前端安全• 安全规范
关于安全
安全三要素
• CIA
• 机密性 Confidentially
• 完整性 Integrity
• 可用性 Availability
安全评估• 资产等级划分
• 威胁分析
• 风险分析
• 确认解决方案 ( 设计安全方案 )
• 能够有效解决问题
• 用户体验好
• 高性能
• 低耦合
• 易于扩展与升级
威胁分析模型
安全分析模型
安全原则
• 最小权限原则——时刻牢记
• 纵深防御原则——更全面、更正确地看待问题
• 数据与代码分离原则——从漏洞成因上看问题
• 不可预测性原则——从客服攻击方法的角度看问题
Web 安全• XSS
• CSRF
• JSON hijack
• SQL 注入
• 任意 url 跳转
• 权限类漏洞
• Flash 安全
• 敏感信息泄露
• 逻辑类漏洞
• 任意文件上传
• 文件包含
• 命令执行
• 不安全的传输
• 暴力破解
Web 安全
• 客户端安全
• 服务端安全
关于安全
• 安全问题的本质是信任问题
关于安全
前端安全
前端安全
• 浏览器安全
• XSS
• CSRF
• HTML 5 安全
前端安全
• 浏览器安全
• 同源策略 Same Origin Policy
• 浏览器沙箱:多进程
• 恶意网址拦截:基于黑名单
同源策略
同源策略• 源继承
• 来自 about:blank , javascript: 和 data:URLs 中的内容,继承了将其载入的文档所指定的源
• IE 特例
• 授信范围
• 端口
• 变更源
• 可设置 document.domain 的值为当前域的一个后缀
• 使用 document.domain 来安全是让子域访问其父域,需要同时将子域和父域的 document.domain 设置为相同的值。
• 端口号: document.domain=“company.com:8080”
同源策略的限制
• DOM
• Cookie
• XMLHttpRequest
• 限制 JavaScript 的权限,不能读写返回内容
不受同源策略的限制• 可以跨域内嵌的资源
• <script src=“…"></script>
• <link rel=“stylesheet" type="text/css" href="...">
• <img>
• <video> 、 <audio>
• <object>, <embed> 和 <applet>
• @font-face
• <frame> 和 <iframe>—— 可 X-Frame-Options 消息头阻止
• 第三方插件: Flash 、 Java Applet 、 Silverlight 、 Google Gears
前端安全• XSS——ex:1_input.php
• 反射型 XSS :把用户输入反射给浏览器
• 存储型 XSS :把用户输入存储在服务端
• —— 持久型
• 基于 DOM 的 XSS :修改页面 DOM 节点
• ex:2_dom_xss.html
XSS• XSS Payload
• 盗取 Cookie
• 构造 GET 、 POST
• http://blog.baidu.com/manage/entry.do?m=delete?id=15672313
• XSS 钓鱼——画出虚假登陆框盗取密码
• XSS Worm
XSS• XSS 构造
• 利用字符编码
• var redirectUrl = “\”;alert(/xss/);”;
• 利用注释绕过长度限制
• location.hash
• <base> 标签
• window.name
XSS 防御• Cookie HttpOnly
• 输入过滤检查: XSS Filter
• 输出编码检查:
• HTMLEncode: escape 、 htmlentities() 、 htmlspecialchars()
• JavaScriptEncode: 变量输出必须在引号中
• 只需一种编码
• 避免客户端的脚本对 DOM重写、重定向等其他敏感操作
XSS 防御• 避免如下代码:
• window.setTimeout系列
• window.location系列
• document.write()系列
• document.create..系列
• document.location系列
• document.open(…)
• 标签闭合
DOM Based XSS• input
• window.location/href/hash
• window.name
• document.referer
• document.cookie
• localstorage
• XMLHttpRequest
前端安全
• CSRF
CSRF
• Cross-site Request Forgery
• XSRF/CSRF
CSRF
• 依靠用户标识危害网站
• 利用网站对用户标识的信任
• 欺骗用户的浏览器发送 HTTP请求给目标站点
• 另外可以通过 IMG 标签会触发一个 GET请求,可以利用它来实现 CSRF 攻击
CSRF
• 需登录
• Form
• AJAX
CSRF 防御
• 将持久化的授权方法(例如 cookie或者 HTTP 授权)切换为瞬时的授权方法
• 时间戳
• 验证码
• token
前端安全
• HTML 5 安全
HTML 5 安全• video/audio
• <video src=“http://xxx/file/xxxx.ogg” onloadedmetadata=“alert(document.cookie)” tabindex=“0”></video>
• iframe sandbox
• <iframe sandbox=“allow-same-origin allow-forms allow-scripts allow-top-navigation” src=“xxx”></iframe>
• noreferer 不发送 referer
• <a href=“xxx” ref=“noreferer”>test</a>
• canvas 破解验证码
• postMessage 跨窗口传递消息
• 验证 domain , url 等
安全规范
JavaScript 安全规范• 禁止使用外部引用的 js,外链应当完全使用 a.tbcdn.cn 上的资
源文件
• 慎用 eval,setTimeout,setInterval 和从不可信站点获取的字符串操作的函数
• cookies操作一定要征询后端工程师的意见 ,避免撑破 cookies的大小限制
• 前端代码禁止获取 referer, 所有 referer 的操作由后端工程师处理
• 禁止发送页面相关信息到第三方站点
• 所有数据必须经过服务端的验证, js 代码需要经过 jslint 的测试
安全规范• 页面级别的 HTML 规范
• 标签完整
• 代码级别的规范
• 接口规范、 coding 规范
• 代码 review
参考
• 《白帽子讲web 安全》
• 《Web 前端黑客技术揭秘》
Thank you
Q&A