2022年稀土开发者大会

基于WebAssembly和QuickJS建设新一代Web开放容器

  • 基于WebAssembly + QuickJS保障 JS 执行的隔离和可控

    • QuickJS-debug: 官方QuickJS还不支持调试能力,但是有开源的类似库
    • WebAssembly 目前还不支持协同能力,需要基于 unwind & rewind 机制释放和恢复调用栈
  • 基于Shadow DOM + iframe 做到样式隔离

  • 基于 CSP 解决内容安全访问

浅谈大环境下的前端代码加固

  • 黑产攻击方式

    • 模拟器破解
    • 接口破解
  • 预防方式

    • 环境检测
      • 模拟器特征检测
      • 方法hook检测
      • 设备指纹收集
      • debug行为检测
    • 协议加密
      • 数据加密
      • 设置蜜罐:在参数中设置陷阱,对非正常用户进行标记

代码加固是阻挡黑产的第一道墙

  • 代码加固的方式

    • JS混淆(工具多,使用方便,易破解)

      控制流打乱

      • 利用switch…case…改变代码由上至下的执行顺序
      • 利用循环引用的 随机长度 随机偏移量 的数组进行控制流顺序的匹配
      • 在多余的case中增加废代码,控制文件体积的同时 增加代码阅读难度

    实际应用中常用babel将代码转化为AST(抽象语法树),在不影响输出结果的情况下,改变树结构,实现混淆。

    源码—–》(解析 @babel/parser)原始AST——》(转换 @babel/traverse) 修改后的AST——》(生成 @babel/generator)修改后的代码

    转换分类:变量名混淆,关键字隐藏,控制流平坦化,花指令…..

    • jsvmp(破解难度大,性能差,只适合保护核心逻辑)
    • WebAssembly(性能好,兼容性较差,适用场景较少)

西瓜视频让视障人群也能看电影

处理方式:

  • Accessibility Service
    • 是系统提供,用于帮助残障人士使用Android设备
  • 添加描述标签
    • 在XML中添加contentDescription属性
    • 请勿为EditText添加contentDescription,TalkBack会自动读出文字本身
    • 利用android: labelFor表明互相关系

常见问题:

  • 焦点丢失:读屏软件无法发现该元素,导致功能无法使用

    • 设置android: focusable与android: focusablelnTouchMode属性解决
  • 焦点冗余:界面中有不显示的冗余焦点,例如:分隔符、背景图片等

    • 设置android: importantForAccessibility属性解决
  • 焦点顺序:读屏软件遍历焦点时,按照从左到右,从上往下

    • 通过android: nextFocusDown | Left | Right | Up等定义用户按不同导航顺序遍历时的下一个要素
    • 也可以使用setNextFocusDownId等方法

字节基于开源的FastBot集成了无障碍扫描规则,提供单页面检测能力,并可以自定义规则,有效提高了发现问题的效率。

AI视觉技术在抖音自然中的应用

Groot目标检测