• 白帽子讲WEB安全 第六章 HTML 5安全


    1、新标签的XSS
         H5中定义类很多新标签、新事件可能带来XSS(为研究XSS攻击H5的变化成立项目----HTML 5 Security Cheatsheet)
         eg:
            1)  <video src=" "  onloadedmetadate="alter(XSS)">----远程加载视频
            2)  <audio>----远程加载音频
            3) iframe 的新属性---sandbox:这一属性使iframe加载的内容变成一个独立的源,其中脚本被禁止执行,表单被禁止提交,             插件被禁止加载,指 向其他浏览器的链接也会被禁止。
                sandbox属性的可控参数有:allow-same-origin----允许同源访问
                                                          allow-top-navigation-----允许访问顶层窗口
                                                          allow-forms--------------允许提交表单
                                                           allow-scripts------------允许执行脚本 (不允许弹出窗口)              
                                         
           4)Link Types:noreferrer
              H5中<a><area>定义了新的Link Types:noreferrer----------浏览器在请求该标签指定的地址时将不再发送referer
              (referer可能会泄漏一些敏感信息)。eg:<a href="xxx" rel="noreferrer"/>
     
           5)Canvas-----H5的图形容器,使用脚本来绘制图形。
              通过Canvas可以破解图片验证码(使用脚本)
     
    2、其他安全问题
         1)Cross-Origin Resource Sharing
              浏览器请求头里 Origin :http://www.a.com/test.html----------标记了HTTP发起的源,服务器通过识别浏览器自动带上       的这个OriginHeader,来判断浏览器的请求是否来自一个合法的源。可以用于防范CSRF。
              服务端返回:Access-Control-Allow-Origin: *-------------------允许客户端跨域请求通过(使用通配符“*”表示允许任意域       的跨域请求通过,十分危险)
     
         2)postMessage---------跨窗口传递消息
              H5中新的API:postMessage---------允许每个window窗口(包括当前窗口、弹出窗口、iframe等)向其他窗口发送文本       信息,此功能不受同源策略限制。
              发送:window.postMessage("xxxxxxx");
              接收:document.addEventListener("message",function(e){e.date})
              使用时需注意的安全问题:
               a、必要时,可以在接收窗口验证Domain,甚至URL,以防止非法页面的消息。
               b、接收回的消息应进行安全检查,否则若直接写入innerHTML或script中,会导致DOM based XSS产生。
               c、postMessage可以突破sandbox限制。
     
          3)Web  Storage---用于存储客户端(WEB端)复杂或数据量大的数据形式,类似cookie。存储形式key/value。
               由两部分组成:sessionStorage与localStorage[1]  。
                sessionStorage:用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束         后数据也随之销毁。因此sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存储。
                localStorage:用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。
                设值:window.sessionStorage.setItem(key,value);     window.localStorage.setItem(key,value);
                读值: window.sessionStorage.getItem(key);               window.localStorage.getItem(key);
               清空: window.sessionStorage.clear();
     
     
         
  • 相关阅读:
    多线程爬取图片(生产者-消费者模式)
    数据结构1_C---单链表的逆转
    Java基础面试知识点总结
    Java工程师必备书单
    Java工程师修炼之路(校招总结)
    Java秋招面经大合集
    我的秋招经验分享(已拿BAT头条网易滴滴)
    听说go语言越来越火了?那么请收下这一份go语言书单吧!
    2020还是AI最火?推荐几本深度学习的书籍帮你入门!
    人工智能真的有那么神秘么,推荐一份机器学习入门书单搞定它!
  • 原文地址:https://www.cnblogs.com/qingchun-com/p/6298332.html
Copyright © 2020-2023  润新知