QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

腾讯防水墙团队:浅谈业务安全前端对抗

  • 2019-04-18
  • 本文字数:2788 字

    阅读完需:约 9 分钟

腾讯防水墙团队:浅谈业务安全前端对抗

随着互联网的发达,各种 Web 端的应用功能越来越多,架构设计也变得越来越复杂。为了抢占流量,所以应用会满足使用者各种各样的需求。但是随着应用功能越来越多的同时,随之而来的就是各种网络安全的问题。如何保护自家产品不被黑客攻击?用户信息不被黑客获取?作为前端开发行业的我们也逃不开这个问题。所以今天我们就简单聊一聊 Web 前端安全以及如何防范。



“安全”是个很大的话题,各种安全问题的类型也是种类繁多。如果我们把安全问题按照所发生的区域来进行分类的话,那么所有发生在后端服务器、应用、服务当中的安全问题就是“后端安全问题”,所有发生在浏览器、单页面应用、Web 页面当中的安全问题则算是“前端安全问题”。当我们下面在谈论“前端安全问题”的时候,我们说的是发生在浏览器、前端应用当中,或者通常由前端开发工程师来对其进行修复的安全问题。


国内很多互联网公司都有自己的安全团队,特别是像腾讯这样的大厂来说,每天面对以亿计算的用户数据,更需要一个强大而精密的技术团队来保证自家的应用安全、稳定的运行。腾讯有一支专门对抗黑产的神秘队伍,叫“腾讯防水墙”。为什么叫“防水墙”?因为这样一听,就知道和“防火墙”是两兄弟啊,而且他们打的就是各种流量水军。


拿腾讯防水墙的日常来看,这支神秘队伍每天在 5000+企业和业务上和黑产分子过招,日均常规风险判断 500 亿+次,识别风险占比高达 30%,平均每 10 次请求就有 3 次为风险请求。现在,腾讯防水墙不但在保护腾讯 3000 多个业务,还为京东 618、双 11 大促保驾护航;为永辉、蒙牛、快手、B 站等提供注册和营销保护。


在今年的 GMTC 全球大前端技术大会上,我们邀请到了腾讯防水墙团队的前端负责人刘忠正老师,来谈谈从代码保护的角度出发,业务安全前端对抗应该如何进行。下面是 InfoQ 对于刘老师做的一个简单的采访:



InfoQ:刘老师您好,请您先简单介绍一下您自己和您目前从事的工作?


刘忠正:首先感谢 GMTC 组委会愿意引入前端安全领域相关的话题,让我有机会给大家分享业务安全前端相关的内容。我是 2015 年毕业的,毕业后效力于阿里巴巴安全部,而后从阿里离职去 51 信用卡管家做过一段时间的前端架构,2017 年加入腾讯,在腾讯防水墙团队负责业务安全的前端。研究如何保护前端数据,增加前端代码逆向的难度,以及对恶意的执行环境进行检测,最终形成一个立体化的业务安全防御体系。


InfoQ:可否简单的介绍一下腾讯防水墙团队,它对于腾讯各业务线有着什么样的作用?


刘忠正:防水墙团队来自腾讯 TEG 安全平台部,团队积累了十余年的业务安全数据和风控经验,在金融、营销、帐号、内容等场景为腾讯各个业务提供业务安全基础能力,保障微信、QQ、腾讯视频、微众银行等产品的业务安全。


InfoQ:从业务安全角度出发,前端安全主要会面临哪些问题?又有什么样的技术手段进行对抗呢?


刘忠正:众所周知通用前端会面临诸如 XSS、CSRF 这样的安全风险,这种安全问题通常危害很大,需要研发同学有一些安全意识去防范。当然很多流程上的缺陷也会带来业务安全问题,但这不属于前端需要重点关注的领域。在业务安全前端领域,爬虫、脚本批量操作才是我们面临最大的问题,我们需要去识别当前操作是正常人还是机器行为。常规的方式是用图形验证码,也就是做图灵测试,但在机器学习盛行的大背景下,图形验证码简直不堪一击,现阶段主流的方案是通过收集用户行为和环境信息构建出多维模型对用户进行精准识别,具体到前端则是采集各种模型需要的数据,并通过加密、混淆、虚拟机等方式保护前端代码不被逆向或篡改。


InfoQ:前端代码保护有哪些方式?(可简单描述技术原理和达到的效果)


刘忠正:首先需要给大家一个客观的认识,类似 Uglify 的代码压缩并不是很好的代码保护手段,因此普遍认为代码压缩不属于代码保护的一部分,代码压缩只是一种代码优化。前端代码保护大致有两个流派,一个是以语法树变换为基础的混淆保护,一个是以构建私有执行环境为思路的虚拟机保护,谷歌则属于后者。代码混淆的效果因混淆器的负责程度而不同,基础级别的混淆器混淆出来的代码也很容易被逆向,而虚拟机保护的抗逆向效果好,其原理是在 JavaScript 的执行环境之上再设计构建一个虚拟机,所有原有业务逻辑的 JavaScript 代码均转换为该虚拟机可识别的字节码,复杂度较高效果好。


InfoQ:对于一般公司来讲,前端安全是个老生常谈的话题,很多情况下只有等出现问题才动手去解决,对于这样的情况你有什么“防范于未然”的建议吗?


刘忠正:前端安全确实是老生常谈的话题,其实很多时候出了问题再挽救往往就晚了,不管是敏感数据被盗还是代金券被薅,一旦薅完,损失就已经无法挽回,未雨绸缪非常重要。安全从业人员有个普遍的共识,就是不出安全问题往往很难去描述自己的工作价值,但出了问题安全人员肯定要背一部分锅,吃力不讨好。那么对于一般公司来说,我个人有两个方面的建议:


  • 不断提升研发人员的安全意识

  • 使用现代前端框架


并不是这么做就不会出问题,但出问题的概率会小一些,每个研发人员都多一点安全意识,很多漏洞就可以避免了。


InfoQ:在您看来,前端安全领域未来会是一个怎么样的发展趋势?


刘忠正:我认为前端安全领域未来的趋势很有可能会是浏览器帮我们做越来越的事,最终安全问题均交给浏览器来解决。从历史趋势看,安全领域的门槛一定是越来越低的,对于从业人员是如此,对于攻击者也是如此。


传统前端安全现阶段已经慢慢形成了一些通用的防御方案,一方面,W3C 制定了 CSP 标准用于提供更通用的 XSS 防御手段,另一方面,现代前端框架 React 等天生就具备一定的防御 XSS 能力,通过标准+框架+意识的提升,传统前端安全问题将越来越少。


而业务安全前端解决的最根本问题是人与机器的问题,那么为何不能由浏览器提供一个统一的生物认证接口,让浏览器告诉站点操作者是人还是机器,比如指纹、FaceID,这类生物特征都是很难被伪造的,浏览器提供统一的接口进行认真,这对于恶意用户来说几乎是降维打击。


那么最终业务安全的问题可能就回归到流程的问题了,业务逻辑是否存在被绕过的漏洞,前端不再那么棘手。


通过刘老师的介绍,我们简单的了解了一下前端安全的重要性和它对于业务的意义,在 GMTC 全球大前端技术大会上刘老师将会带来《从代码保护出发详谈业务安全前端对抗》的详细技术演讲,下面是演讲提纲:


  1. 业务安全对抗背景

  2. (1) 业务安全背景

  3. (2)恶意分类

  4. (3)图像对抗的脆弱性

  5. 前端解决方案

  6. (1)前端数据保护

  7. (2)前端代码保护

  8. (3)字面量混淆

  9. (4)流程混淆

  10. (5)调试检测

  11. 执行环境检测

  12. (1)Node.js 环境检测

  13. 模拟器环境检测

  14. (1)动态混淆技术

  15. 小结及效果


对于刘老师的演讲或者前端安全领域感兴趣的小伙伴欢迎来现场聆听详细的技术演讲细节。在GMTC全球大前端技术大会上我们还设置了小程序、性能优化、前端框架、Node、移动 AI、图形渲染、前端团队管理等热门技术专场,可点击”这里“了解大会详情。购票咨询:18514549229(同微信)


2019-04-18 10:4912938

评论

发布
暂无评论
发现更多内容

阿里高工内产的 SpringBoot 实战派手册仅发布一天霸榜Github

Geek_0c76c3

Java 数据库 开源 架构 开发

架构师的十八般武艺:安全架构

agnostic

安全架构

华为帐号自拟形象上线 打造手机里的另一个你

HarmonyOS SDK

JS 模块化 - 02 Common JS 模块化规范

Java-fenn

Java

react中的diff算法,通俗易懂的解读

flyzz177

React

如何保证数据库和缓存双写一致性?

Java快了!

抽丝剥茧看时间序列预测

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

重磅来袭!腾讯T7手写高并发实战手册,GitHub热度一直不下

Geek_0c76c3

Java 数据库 spring 开源 架构

安卓项目架构设计-梳理现有项目的混乱

Java-fenn

Java

VScode中配置 C/C++ 环境

c vscode 9月月更

ESP32-C3入门教程 网络 篇(二、 Wi-Fi 配网 — Smart_config方式 和 BlueIF方式)

矜辰所致

wifi ESP32-C3 9月月更 BlueIF Smaart_config

架构营第一期作业

许四多

架构实战营模块八作业

zhihai.tu

阿里顶配版 Spring 全家桶高级笔记+学习路线图+硬核资料库,跪着啃完了。。。。

Java-fenn

Java 程序员 面试 Java面试题

MySql的InnoDB的三层B+树可以存储两千万左右条数据的计算逻辑

Java-fenn

Java

ESP32-C3入门教程 网络 篇(一、 Wi-Fi 使用入门 — 初始化及STA、AP模式)

矜辰所致

wifi ESP32-C3 9月月更

20 条 Chrome DevTools 使用建议,盲猜这几个你不知道~

掘金安东尼

前端 9月月更

名震GitHub!字节跳动内部顶级数据结构刷题学习笔记根本停不下来

程序知音

Java 数据结构 算法 后端开发 数据结构与算法

初识设计模式 - 原型模式

Java-fenn

Java

使用 WebAssembly 打造定制 JS Runtime

Java-fenn

Java

基于electron+vue+element构建项目模板之【自定义标题栏&右键菜单项篇】

Java-fenn

Java

[架构实战]学习笔记

爱学习的麦子

国际聋人周 | 聋健人群无界融合,看见手语的力量

HarmonyOS SDK

手语

AWS CloudFormation简介

冯亮

DevOps AWS Cloud IaC

JAVA代码审计之java反序列化

Java-fenn

Java

VS Code settings.json 10 个高(装)阶(杯)配置!

掘金安东尼

9月月更

探索商业细分市场,中海打造北京南中轴首座家庭购物中心 | 商业地产

E科讯

认识RocketMQ4.x架构设计

Java-fenn

Java

Alibaba架构师内部最新发布SpringCloud开发手册,Github限时开源

Geek_0c76c3

Java 数据库 spring 开源 架构

【编程实践】出行无忧,利用Python爬取天气预报

迷彩

爬虫 爬虫教程 9月月更 Scarpy

腾讯防水墙团队:浅谈业务安全前端对抗_安全_刘忠正_InfoQ精选文章