JS题 实际问题

  • 点击穿透

    这是因为在移动端浏览器,事件执行的顺序是touchstart > touchend > click
    而click事件有300ms的延迟,当touchstart事件把B元素隐藏之后,隔了300ms,浏览器触发了click事件,但是此时B元素不见了,所以该事件被派发到了A元素身上
    如果A元素是一个链接,那此时页面就会意外地跳转
    
  • 事件机制

    捕获,到达目标,冒泡
    
    现代浏览器:addEventListener / evt.target,无on,有捕获和冒泡,参数3控制在捕获还是冒泡阶段触发事件
    旧IE:attachEvent / event.srcElement,带on,只有冒泡阶段
    
  • XSS

    发生在:
    1. 数据从一个不可靠的链接进入到一个web应用程序
    2. 没有过滤掉恶意代码的动态内容被发送给web用户
    
    前端防范:
    1. 字符串类型的数据,需要针对<、>、/、’、”、&五个字符进行实体化转义
    function encodeHTML (a) {
      return String(a)
        .replace(/&/g, "&amp;")
        .replace(/</g, "&lt;")
        .replace(/>/g, "&gt;")
        .replace(/"/g, "&quot;")
        .replace(/'/g, "&#39;");
    };
    2. 在响应头或页面<meta>内设置 Content-Security-Policy
    3. 设置响应头的 HttpOnly ,使得 cookie 不能使用 JavaScript 经由  Document.cookie 属性、XMLHttpRequest 和  Request APIs 进行访问
    
    后端防范:过滤所有的‘<’和‘>’字符,确保从后端而来的数据并不带有任何的html标签,xss的危险在于有不可预料的前端脚本,但是值得注意的是,不单只有script标签是可以运行脚本的,任何的html标签都可以加上类似onclick,onload这样的事件也都可以运行脚本,所以需要过滤所有的‘<’和‘>’字符
    
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 相关知识点 移动端、 适配(兼容)、 ios点击事件300ms延迟、 点击穿透、 定位失效...... 问题&解决...
    sandisen阅读 25,693评论 3 67
  • 1.几种基本数据类型?复杂数据类型?值类型和引用数据类型?堆栈数据结构? 基本数据类型:Undefined、Nul...
    极乐君阅读 10,938评论 0 106
  • 不知你们是否有着同样的感受,就是每天时刻拿着手机,明明没消息也没电话,却总是忍不住去点开看看,夜晚躺在床上,明明说...
    贝希子阅读 1,690评论 3 0
  • 简介 本文内容摘自《深入理解Nginx》第二版 1.6节。 命令行控制 默认路径 默认安装路径是/usr/loca...
    神农民阅读 3,301评论 0 1