250 likes | 570 Views
Web 前端安全防范. 安全问题是互联网的头号大问题 ——Douglas Crockford. 我们所处的环境. 我们面临的敌人. 攻击原理. CSRF. 案例解析 . 防御方法. 攻击原理. XSS. 案例解析 . 防御方法. 什么是 CSRF ?. Cross Site Request Forgery 会话劫持 / 身份伪造 蠕虫 链接背后的诱惑和欺骗 为什么要 CSRF ? 如何 CSRF ?. CSRF – 原理篇. m.qzone.qq.com. 无辜的 受害者. taotao.qq.com.
E N D
Web前端安全防范 安全问题是互联网的头号大问题 ——Douglas Crockford
我们面临的敌人 攻击原理 CSRF 案例解析 防御方法 攻击原理 XSS 案例解析 防御方法
什么是CSRF? • Cross Site Request Forgery • 会话劫持 / 身份伪造 • 蠕虫 • 链接背后的诱惑和欺骗 • 为什么要CSRF? • 如何CSRF?
CSRF – 原理篇 m.qzone.qq.com 无辜的 受害者 taotao.qq.com <a href=“http://hacker.org?uin=受害者的QQ”>(诱人的内容)</a> 黑客主机 <form action=“http://taotao.qq.com/cgi-bin/...”> … //黑客定义的发布内容或其它特定写操作 </form>
CSRF – 防御篇 - 如何检测? • 体力活 • 检查所有写接口 • 把POST改成GET试试 • 靠经验 • 我还有什么办法?
CSRF – 防御篇 • GET POST (好的开始) • Referrer (不可信赖) • ID verification (比较弱) • Verification code (很强可…) • Anti-CSRF token (这个不错) • Take care of XSS…
什么是XSS? • Cross Site Script • 注入HTML/Javascript • alert(/XSS/) • Exploit (利用) • 前端透明 • 为什么要XSS? • 如何XSS?
来一个邪恶的脑暴 如果可以控制前端,你打算干些什么坏事? • 免费获得黄钻特权 • 写一个死循环,让用户崩溃 • 把页面搞乱,因为可以document.write... • 盗取用户信息 • 更具有趣味性的钓鱼 • 利用本地漏洞制造更惊爆的效果
XSS类型 • 本地XSS • htm/html/hta • chm/mht • 非存储(Non-stored)XSS • 反射式(Reflection)XSS • 可存储(Stored)XSS • XSS蠕虫
XSS – 攻击原理 合法输入 前端校验 请求篡改 或 直接伪造 非法XSS输入 非法XSS输入回显 Server App
XSS - 防御篇 • 确认是否需要富文本显示? • 关键点处理 Hint • 入库时转换 • 输出时转换(根据规则) • 使用成熟的解决方案 • 利用脚本进行侦听
XSS - 检测篇 • 依然是体力活! • 检查输入 & 输出 • XSS cheat sheet • 工具 • Ratproxyfrom Google • TamperIE
一些可循的经验 • 我们发现大部分漏洞都因以下几点没做好: • 凡是写操作必须至少添加uin(ID/QQ号)验证,这样虽然不能彻底杜绝CSRF,但起码可以遏制蠕虫。如果有条件、便于改造,建议都加上token验证; • 凡是涉及隐私或非常重要的读操作,如仅主人自己可见内容和好友列表等,必须添加Anti-CSRF Token验证。空间大部分读操作CGI返回的是_Callback({})这样的格式,这给了黑客利用CSRF的可乘之机,即一种叫做json-hijacking的方法,可在外域页面通过script引用该CGI实现跨域盗取数据,造成隐私泄漏。
一些可循的经验 • 凡是通过URL参数获取的字段值要打印到页面上时(无论是前台还是后台),必须严格判断和约束字段类型,对于可能是string类型的字段,需要验证是否合法,或者在输出页面时进行HTMLEncode处理,切忌直接输出,以确保没有反射式XSS注入的风险; • 凡是富文本表现的UGC,或会嵌入到富文本环境的用户输入(如图片链接),在以CGI直接输出到页面的形式出现时,必须通过安全库过滤,以确保无潜在XSS风险。比较典型的例子是:<img … onload=”setImage(this, ' <?csvar:ImgSrc ?> ');” />,如果ImgSrc不做合法性检测或者只是做HTMLEncoding,同样会被洞穿,形成XSS。
回顾一下 攻击原理 CSRF 案例解析 防御方法 攻击原理 XSS 案例解析 防御方法
Security Source • http://www.owasp.org • http://www.80sec.com/ • http://en.wikipedia.org/wiki/Cross-site_scripting • http://www.houbysoft.com/papers/xss.php • http://ha.ckers.org/xss.html • http://ajaxian.com/archives/csrf-report • http://huaidan.org/archives/1462.html • http://www4.it168.com/jtzt/shenlan/safe/xss/
Q & A 安全问题很重要,如果特性没做好或者有bug,用户还可以接受,但如果发现自己隐私被泄露,他就不再信任这个产品了。 —— Leohe