SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
前端安全须知
拔赤 bachi@taobao.com
    2010-02-26
网络安全
web前端安全
Javascript安全须知
网络安全
web前端安全
Javascript安全须知
网络安全
机密性(加密)
完整性(防伪造)
来源可靠性(签名)

程序漏洞
网络安全
web前端安全
Javascript安全须知
Web前端安全
XSS
 Cross Site Script(跨站攻击脚本)


CSRF:
 Cross Site Request Forgery(跨站伪造请求)
XSS
XSS
 往Web页面里插入恶意html代码
 当用户浏览该页之时,嵌入其中Web里面的
 html代码会被执行
XSS
      恶意html/js脚本

              程序漏洞


        Hack.run()
        Web page
XSS的种类
基于DOM的XSS
非持久性XSS
持久性XSS
基于字符集的XSS
基于flash的跨站
Self-inflicted(自己造成的) XSS
未经验证的跳转构成的跨站
Cookie构成的跨站
Escape-based XSS
XSS-基于DOM的XSS
 产生原因
  当web page含有一些不受服务器端控制的DOM
  的时候发生
  通过form、referer、location修改页面DOM


 解决方法
  避免客户端的脚本对DOM的重写、重定向及其
  它敏感的操作,需要在客户端对form输入进行
  过滤
可被攻击者利用的脚本
URL相关操作
document.location=…
document.location.hostname=…
document.location.replace(…)
document.location.assign(…)
document.URL=…
document.referrer
document.URLUnencoded
window.navigate(…)
window.location

直接运行脚本
eval(…)
window.execScript(…)
window.setInterval(…)
window.setTimeout(…)
直接写入html代码
document.write(…)
document.writeln(…)
document.body.innerHtml=…
直接修改DOM
document.forms[0].action=…
document.attachEvent(…)
document.create…(…)
document.execCommand(…)
document.body
window.attachEvent(…)

 打开或修改窗口
document.open(…)
window.open(…)
window.location.href=…
XSS-非持久性跨站
产生原因
 直接将form或者query(cookie)中的字符带入到
 页面中,危险query字符参与html的构成
 (query字符并不被存储)

解决方法
 对输入进行过滤
 对输出进行编码
XSS-持久性跨站
 产生原因
  其破坏页面html结构的原理和非持久XSS一
  样,只是危险脚本来源不是query字符,而是
  数据库数据



 解决办法
  对输入进行过滤
  对输出进行编码
XSS-基于字符集的跨站
产生原因
 页面字符集不固定,用户输入非期望字符集的
 字符,有时会绕过前端的过滤

解决办法
 Web页面一定要指定字符集(GBK)
 XML中不仅要指定字符集,而且标签要闭合
XSS-基于flash的跨站
 产生原因
  As脚本可以接受用户输入并操作cookie,攻
  击者可以配合其他XSS方法将恶意swf文件嵌入
  页面中

 解决办法
  严格管理cookie的读写权限
  对flash能接受的用户输入进行过滤和限定
XSS- Self-inflicted XSS
 产生原因
   攻击者先把页面搞出漏洞,让其他用户再浏览
   这个有漏洞的页面的时候遭受攻击。
   这里已经不是严格意义上的XSS了

 解决方法
   页面登录超时
XSS-未经验证的跳转构成的跨站
产生原因
 如果服务器端做302跳转,跳转的地址来自用
 户的输入,攻击者可以输入一个恶意的跳转地
 址来执行脚本。
解决方法
 在后端来限定所接收的URL来自淘宝并做过滤
XSS-Cookie构成的跨站
 产生原因
  破坏页面结构的原理和非持久跨站一致
  Js或as可操作cookie,通过cookies提交query

 解决办法
  一切来自客户端的cookie是不可信的,后端必
  须对客户端cookie做验证
XSS- Escape-based XSS
 产生原因
   其破坏页面语义构成的原理和非持久XSS一致
   使用畸形的UTF8字符串拼成URL

 解决方法
   对输入进行过滤
   对输出进行编码
CSRF
CSRF
 (通过肉鸡)伪造请求
CSRF的发生
 所有需要登录页面中的交互
 表单提交
 AJAX
CSRF的防范
 临时签名(验证码、时间戳)
 crumb
淘宝对CSRF的防范
      在表单中指定token
<input type=”hidden” value=”{$token}” name="_tb_token_">



      在cookie中指定_tb_token_
      尽量使用POST方法
      Ajax时附带token
网络安全
web前端安全
Javascript安全须知
Javascript安全须知
 禁止使用外部引用的js,外链应当完全使用a.
 tbcdn.cn上的资源文件
 慎用eval,setTimeout,setInterval和从不可信站点获
 取的字符串操作的函数。
 cookies操作一定要征询后端工程师的意见,避
 免撑破cookies的大小限制了。
 前端代码禁止获取referer,所有referer的操作
 由后端工程师处理。
Javascript安全须知 续
 禁止发送页面相关信息到第三方站点
 如果JSON返回的信息里含有用户的私密信息,
 需要加_tb_token_
 禁止使用script标签来达到跨域访问的目的,应
 当使用flash实现跨域访问,可信域之间的跨域
 可以使用iframe
 所有使用的数据必须经过服务端的验证。
 js代码需要经过jslint的测试
我们还需要安全规范
页面级的html规范/标准
 统一的编码标准(URL/GBK/js unicode)
 标签完整性
代码级的coding规范
 统一的ajax接口规格
 页面中php/jsp和js代码的参数传递
 规范的javascript编写习惯
代码review制度
Q&A

Contenu connexe

En vedette

C:\Documents And Settings\Pc 04\Documenti\Ii U\Cell
C:\Documents And Settings\Pc 04\Documenti\Ii U\CellC:\Documents And Settings\Pc 04\Documenti\Ii U\Cell
C:\Documents And Settings\Pc 04\Documenti\Ii U\CellGabriellaTheOne
 
Vision for Action Launch
Vision for Action LaunchVision for Action Launch
Vision for Action Launchpeterwestlondon
 
前端MVC 豆瓣说
前端MVC 豆瓣说前端MVC 豆瓣说
前端MVC 豆瓣说Ting Lv
 
倔倔和Javascript的那些事儿
倔倔和Javascript的那些事儿倔倔和Javascript的那些事儿
倔倔和Javascript的那些事儿Ting Lv
 
Bildebok: Hva slags figur er det på fem av bildene?
Bildebok: Hva slags figur er det på fem av bildene?Bildebok: Hva slags figur er det på fem av bildene?
Bildebok: Hva slags figur er det på fem av bildene?vestfold university college
 

En vedette (6)

C:\Documents And Settings\Pc 04\Documenti\Ii U\Cell
C:\Documents And Settings\Pc 04\Documenti\Ii U\CellC:\Documents And Settings\Pc 04\Documenti\Ii U\Cell
C:\Documents And Settings\Pc 04\Documenti\Ii U\Cell
 
C:\Fakepath\Darcy
C:\Fakepath\DarcyC:\Fakepath\Darcy
C:\Fakepath\Darcy
 
Vision for Action Launch
Vision for Action LaunchVision for Action Launch
Vision for Action Launch
 
前端MVC 豆瓣说
前端MVC 豆瓣说前端MVC 豆瓣说
前端MVC 豆瓣说
 
倔倔和Javascript的那些事儿
倔倔和Javascript的那些事儿倔倔和Javascript的那些事儿
倔倔和Javascript的那些事儿
 
Bildebok: Hva slags figur er det på fem av bildene?
Bildebok: Hva slags figur er det på fem av bildene?Bildebok: Hva slags figur er det på fem av bildene?
Bildebok: Hva slags figur er det på fem av bildene?
 

Similaire à Web前端 安全须知 拔赤

Telligem 1_xss
Telligem  1_xssTelligem  1_xss
Telligem 1_xsspaitoubing
 
Web安全分享 -公开版
Web安全分享 -公开版Web安全分享 -公开版
Web安全分享 -公开版piao2010
 
用戶端攻擊與防禦
用戶端攻擊與防禦用戶端攻擊與防禦
用戶端攻擊與防禦Taien Wang
 
議題二:Web應用程式安全防護
議題二:Web應用程式安全防護議題二:Web應用程式安全防護
議題二:Web應用程式安全防護Nicolas su
 
浏览器的跨域安全问题
浏览器的跨域安全问题浏览器的跨域安全问题
浏览器的跨域安全问题raystyle
 
黑站騎士
黑站騎士黑站騎士
黑站騎士openblue
 
軟體弱點掃描
軟體弱點掃描軟體弱點掃描
軟體弱點掃描Rainmaker Ho
 
互联网公司web安全挑战与防护思路浅谈
互联网公司web安全挑战与防护思路浅谈 互联网公司web安全挑战与防护思路浅谈
互联网公司web安全挑战与防护思路浅谈 zhiyanhui
 

Similaire à Web前端 安全须知 拔赤 (10)

Telligem 1_xss
Telligem  1_xssTelligem  1_xss
Telligem 1_xss
 
Web安全分享 -公开版
Web安全分享 -公开版Web安全分享 -公开版
Web安全分享 -公开版
 
用戶端攻擊與防禦
用戶端攻擊與防禦用戶端攻擊與防禦
用戶端攻擊與防禦
 
議題二:Web應用程式安全防護
議題二:Web應用程式安全防護議題二:Web應用程式安全防護
議題二:Web應用程式安全防護
 
Web security
Web securityWeb security
Web security
 
浏览器的跨域安全问题
浏览器的跨域安全问题浏览器的跨域安全问题
浏览器的跨域安全问题
 
Share xss
Share xssShare xss
Share xss
 
黑站騎士
黑站騎士黑站騎士
黑站騎士
 
軟體弱點掃描
軟體弱點掃描軟體弱點掃描
軟體弱點掃描
 
互联网公司web安全挑战与防护思路浅谈
互联网公司web安全挑战与防护思路浅谈 互联网公司web安全挑战与防护思路浅谈
互联网公司web安全挑战与防护思路浅谈
 

Plus de jay li

犀牛书第六版
犀牛书第六版犀牛书第六版
犀牛书第六版jay li
 
淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践jay li
 
Jswebapps
JswebappsJswebapps
Jswebappsjay li
 
潜力无限的编程语言Javascript
潜力无限的编程语言Javascript潜力无限的编程语言Javascript
潜力无限的编程语言Javascriptjay li
 
Responsive Web UI Design
Responsive Web UI DesignResponsive Web UI Design
Responsive Web UI Designjay li
 
深入剖析浏览器
深入剖析浏览器深入剖析浏览器
深入剖析浏览器jay li
 
HTML/CSS/JS基础
HTML/CSS/JS基础HTML/CSS/JS基础
HTML/CSS/JS基础jay li
 
淘宝前端技术巡礼
淘宝前端技术巡礼淘宝前端技术巡礼
淘宝前端技术巡礼jay li
 
F2e security
F2e securityF2e security
F2e securityjay li
 
中国元素在设计中的应用 -如瑟
中国元素在设计中的应用 -如瑟中国元素在设计中的应用 -如瑟
中国元素在设计中的应用 -如瑟jay li
 
卫银霞 -统计数字会撒谎
卫银霞 -统计数字会撒谎卫银霞 -统计数字会撒谎
卫银霞 -统计数字会撒谎jay li
 
编码大全 拔赤
编码大全 拔赤编码大全 拔赤
编码大全 拔赤jay li
 
小控件、大学问
小控件、大学问小控件、大学问
小控件、大学问jay li
 
Mobile UI design and Developer
Mobile UI design and DeveloperMobile UI design and Developer
Mobile UI design and Developerjay li
 
Javascript autoload
Javascript autoloadJavascript autoload
Javascript autoloadjay li
 
Html5form
Html5formHtml5form
Html5formjay li
 
Js doc toolkit
Js doc toolkitJs doc toolkit
Js doc toolkitjay li
 
新业务新员工培训 Banner设计
新业务新员工培训   Banner设计新业务新员工培训   Banner设计
新业务新员工培训 Banner设计jay li
 
夏之 专题设计
夏之 专题设计夏之 专题设计
夏之 专题设计jay li
 

Plus de jay li (20)

犀牛书第六版
犀牛书第六版犀牛书第六版
犀牛书第六版
 
淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践
 
Jswebapps
JswebappsJswebapps
Jswebapps
 
潜力无限的编程语言Javascript
潜力无限的编程语言Javascript潜力无限的编程语言Javascript
潜力无限的编程语言Javascript
 
Responsive Web UI Design
Responsive Web UI DesignResponsive Web UI Design
Responsive Web UI Design
 
深入剖析浏览器
深入剖析浏览器深入剖析浏览器
深入剖析浏览器
 
HTML/CSS/JS基础
HTML/CSS/JS基础HTML/CSS/JS基础
HTML/CSS/JS基础
 
淘宝前端技术巡礼
淘宝前端技术巡礼淘宝前端技术巡礼
淘宝前端技术巡礼
 
F2e security
F2e securityF2e security
F2e security
 
中国元素在设计中的应用 -如瑟
中国元素在设计中的应用 -如瑟中国元素在设计中的应用 -如瑟
中国元素在设计中的应用 -如瑟
 
卫银霞 -统计数字会撒谎
卫银霞 -统计数字会撒谎卫银霞 -统计数字会撒谎
卫银霞 -统计数字会撒谎
 
编码大全 拔赤
编码大全 拔赤编码大全 拔赤
编码大全 拔赤
 
小控件、大学问
小控件、大学问小控件、大学问
小控件、大学问
 
Mobile UI design and Developer
Mobile UI design and DeveloperMobile UI design and Developer
Mobile UI design and Developer
 
Javascript autoload
Javascript autoloadJavascript autoload
Javascript autoload
 
Html5form
Html5formHtml5form
Html5form
 
Slide
SlideSlide
Slide
 
Js doc toolkit
Js doc toolkitJs doc toolkit
Js doc toolkit
 
新业务新员工培训 Banner设计
新业务新员工培训   Banner设计新业务新员工培训   Banner设计
新业务新员工培训 Banner设计
 
夏之 专题设计
夏之 专题设计夏之 专题设计
夏之 专题设计
 

Web前端 安全须知 拔赤