腾讯代码安全指南旨在梳理 API 层面的风险点并提供详实可操作的编码指引,是我们开展 DevSecOps 安全左移实践探索过程中,梳理沉淀面向开发人员的代码安全参考材料。

本次开源涉及 C/C++、JavaScript、Node、Go、Java、Python 六门编程语言的安全指南。

一、项目背景

近年来,无论是 DevSecOps,还是 Google SRE 的可靠和安全性理念,都提倡“安全需要每个工程师的参与”。其中涉及的“安全左移”理念也再次被推向前台,获得关注。

除安全团队建设一系列安全机制和工具外,每位开发者也可以身体力行地参与进来——编写安全的代码,从源头杜绝漏洞。

基于此,腾讯各 BG 安全团队和热心开发人员,从业务角度梳理了代码安全指南。它提供了详实的参考材料和行动大纲,分功能、语言整理了编码的最佳安全实践,可作为一线开发者的权威参考,有助于开发黑、白盒漏洞扫描工具和策略。

二、设计理念

代码安全指南的内容呈树状结构展开,共分 5 层,如下:

2.1 语言

每种语言面临安全的风险种类不同,需要分别开展详述。如:go 和 javascript 对比,go 就不存在原型链污染的问题。同时,由于公司内的代码风格规范亦分语言展开,安全规范采取相同的分语言方式能保持整体的连贯性。

2.2 

这里的端是指不同的终端,如:Web、安卓客户端、iOS 客户端、PC 客户端。实践过程中,将内容按端区分的原因有:

1、同一门编程语言,用在不同的终端应用开发,其面临的风险类型和数量有着天壤之别。例如:JavaScript 应用于前端页面开发时,面临的主要风险是 DOM XSS;但 JavaScript 亦可依托 Node.js 进行 Web 后端接口开发,如果编码不当,则存在命令注入、SQL 注入等风险。

2、大型互联网公司内,项目开发采取“流水线”化作业,分工往往精细明确,将不同端的场景作为主干目录,更便于开发人员检索、快速了解编码安全知识。

2.3 场景

通过复盘历史漏洞,安全风险可按成因粗略归为两类:

1、代码漏洞,是指代码编写时,因不安全的 API 使用和逻辑编写产生的安全风险。

2、运维漏洞,是指代码的运行环境、配置和依赖等系统运维相关的问题。涉及的安全风险本质上是:部分语言依赖包管理,当部分企业私有软件包仅在公司内部软件源注册时,攻击者就可以在外部公共软件源上抢注。如果公司内员工使用包管理软件拉取时,未配置公司镜像源时,就会拉取到攻击者抢注的恶意包。

2.4 功能

在对内、外部发现的漏洞进行复盘过程中,我们发现安全风险与业务场景高度相关,例如:

由于代码安全指南的目标受众是开发人员看的。在撰写指南过程中,我们尝试将漏洞转化为功能场景,以此作为主干目录。由于与具体的业务场景关联,在开发时能更容易想起相关的注意事项,由此可降低认知、学习成本。

2.5 内容

指南内容核心围绕编程语言和框架的 API/sink 点展开。对开发人员来说,API 是实现业务逻辑时,高频接触对象。而通常,安全漏洞往往可归因为 API 的错误使用。对安全工程师来说,sink 点是编写安全策略、组件是非常重要的一部分,直接决定了安全系统的扫描能力。

编写代码安全指引时,采取了以下方法来提升内容的完善性:

● 聚合各语言、组件、框架文档中的最佳安全实践;

● 充分调研 CWE、OWASP 等现有规范,采用更方便开发者记忆的编排和阐述方式;

● 编码模式基于丰富的公司内外已知漏洞案例,不断补充先前未考虑到的风险规避建议;

● 举一反三,结合各类开发文档和提炼的漏洞产生原因,挖掘鲜有提及的风险点加入规范中。

三、开源交流

我们希望通过将代码安全指南开源,帮助有 DevSecOps 和安全左移建设的企业机构解决实际问题。同时,安全指引需要随着新发现的漏洞、编程语言&框架的迭代不断完善。希望能和社区携手,一道维护完善。如果你觉得帮助,欢迎给项目 Star、提交 Issue 和 PR。

腾讯代码安全指南开源,涉及 C/C++、Go 等六门编程语言相关推荐

  1. 牛逼大了!腾讯官方的代码安全指南免费公开

    ????????关注后回复 "进群" ,拉你进程序员交流群???????? 程序员书库(ID:CodingBook) 猿妹整编 综合自:https://github.com/Ten ...

  2. 腾讯荣获OSCAR尖峰开源企业奖 参与国内首个开源治理白皮书编写

    3月21日至22日,中国云计算开源领域最专业.最高端.最具规模的行业盛会"OSCAR云计算开源产业大会"在国家会议中心召开,该会议由工业和信息化部指导.中国信息通信研究院主办.腾讯 ...

  3. 腾讯优图:开源 YOLO 系列代码(含 YOLOv3 以及各种 Backbone)

    Summary:腾讯优图:开源YOLO系列代码(含YOLOv3以及各种backbone) Author:Amusi Date:2019-01-017 微信公众号:CVer https://github ...

  4. 金山开源安全卫士全套代码编译指南–湘勇整理版

    金山开源安全卫士全套代码编译指南–湘勇整理版 要从金山开源安全卫士的代码里学习,首先当然是最好能把全套代码编译出来进行调试.在开发湘勇网络医生的过程中,我一直关注金山开源安全卫士代码的更新动态,第一时 ...

  5. 面向开发人员的代码安全指南

    面向开发人员的代码安全指南 该指南是腾讯开源的面向开发人员梳理的代码安全指南,旨在梳理API层面的风险点并提供详实可行的安全编码方案.基于DevSecOps理念,我们希望用开发者更易懂的方式阐述安全编 ...

  6. 【腾讯代码文化】人均3.6万行代码,《腾讯研发大数据报告》正式发布!

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 作为国内科技巨头,腾讯的产品早已覆盖到了每个国人手中,不过这家公司对于自身技术一直 ...

  7. 插件代码_我们开源了一款 SonarQube iOS 代码扫描插件

    背景: 我们在公司(好未来)内部开发了一套基于 SonarQube 的静态代码扫描服务,得益于 SonarQube 开源版本本身的功能,我们可以直接复用支持主流的编程语言,但 SonarQube 的开 ...

  8. python代码风格指南_记录Python代码:完整指南

    python代码风格指南 Welcome to your complete guide to documenting Python code. Whether you're documenting a ...

  9. 文档化Python代码完全指南(翻译)

    阅读代码比编写代码更多,有良好丰富文档的项目会吸引更多人使用和参与开发贡献.本教程旨在详细阐述如何将 Python 代码实现"文档化",介绍了注释用法.类型提示.文档字符串.在项目 ...

最新文章

  1. CSS3---6.文字阴影
  2. Android深入浅出系列之实例应用—手机页面之间的跳转
  3. fifo java_java linux fifo文件通信
  4. 登录时本地保存账号密码及关闭ARC的方法
  5. oracle分页查询加总数,oracle count 百万级 分页查询记要总数、总条数优化
  6. rabbitmq进阶一
  7. python应声虫代码_前端大牛们都学过哪些东西?
  8. python用scrapy爬虫豆瓣_Python-用Scrapy爬取豆瓣电影
  9. fatal: unable to access ‘https://XXXXX‘: : OpenSSL SSL_read: Connection was reset, errno 10054……
  10. 中国天然金红石市场趋势报告、技术动态创新及市场预测
  11. Nginx多进程高并发、低时延、高可靠机制在滴滴缓存代理中的应用
  12. php listen命令,开启队列时,命令行输入php think queue:listen出现乱码
  13. 六轴传感器使用学习记录
  14. 无线路由器pppoe服务器,详解Volans飞鱼星路由器怎么设置PPPOE服务器
  15. 【Android工具】盘点几个有应用历史版本功能的应用商店
  16. 鼠标悬停显示禁用图标
  17. 双鱼座男适合学计算机专业,双鱼座男生适合的职业是什么
  18. 细雨湿衣看不见 闲花落地听无声
  19. nginx设置IP、文件目录、请求头白名单
  20. PHP人民币小写数字转大写中文

热门文章

  1. Oracle项目管理主数据之RBS与ROBS
  2. 如何实行反编译,将.class文件转化为.java文件
  3. CSDN、博客园、简书、oschina、Iteye各大社区现状
  4. linux和数据库day01随堂笔记
  5. Htm 转换 安卓java_Android开发 Html工具类详解
  6. Jxta 命令 shell
  7. echarts 圆图带图片显示
  8. 【Linux命令行与Shell脚本编程】三,Linux文件系统
  9. three.js 实现辉光(原生JS)
  10. Win8安装mysq5.6没有MySQL服务