腾讯代码安全指南开源,涉及 C/C++、Go 等六门编程语言
腾讯代码安全指南旨在梳理 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 等六门编程语言相关推荐
- 牛逼大了!腾讯官方的代码安全指南免费公开
????????关注后回复 "进群" ,拉你进程序员交流群???????? 程序员书库(ID:CodingBook) 猿妹整编 综合自:https://github.com/Ten ...
- 腾讯荣获OSCAR尖峰开源企业奖 参与国内首个开源治理白皮书编写
3月21日至22日,中国云计算开源领域最专业.最高端.最具规模的行业盛会"OSCAR云计算开源产业大会"在国家会议中心召开,该会议由工业和信息化部指导.中国信息通信研究院主办.腾讯 ...
- 腾讯优图:开源 YOLO 系列代码(含 YOLOv3 以及各种 Backbone)
Summary:腾讯优图:开源YOLO系列代码(含YOLOv3以及各种backbone) Author:Amusi Date:2019-01-017 微信公众号:CVer https://github ...
- 金山开源安全卫士全套代码编译指南–湘勇整理版
金山开源安全卫士全套代码编译指南–湘勇整理版 要从金山开源安全卫士的代码里学习,首先当然是最好能把全套代码编译出来进行调试.在开发湘勇网络医生的过程中,我一直关注金山开源安全卫士代码的更新动态,第一时 ...
- 面向开发人员的代码安全指南
面向开发人员的代码安全指南 该指南是腾讯开源的面向开发人员梳理的代码安全指南,旨在梳理API层面的风险点并提供详实可行的安全编码方案.基于DevSecOps理念,我们希望用开发者更易懂的方式阐述安全编 ...
- 【腾讯代码文化】人均3.6万行代码,《腾讯研发大数据报告》正式发布!
关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 作为国内科技巨头,腾讯的产品早已覆盖到了每个国人手中,不过这家公司对于自身技术一直 ...
- 插件代码_我们开源了一款 SonarQube iOS 代码扫描插件
背景: 我们在公司(好未来)内部开发了一套基于 SonarQube 的静态代码扫描服务,得益于 SonarQube 开源版本本身的功能,我们可以直接复用支持主流的编程语言,但 SonarQube 的开 ...
- python代码风格指南_记录Python代码:完整指南
python代码风格指南 Welcome to your complete guide to documenting Python code. Whether you're documenting a ...
- 文档化Python代码完全指南(翻译)
阅读代码比编写代码更多,有良好丰富文档的项目会吸引更多人使用和参与开发贡献.本教程旨在详细阐述如何将 Python 代码实现"文档化",介绍了注释用法.类型提示.文档字符串.在项目 ...
最新文章
- CSS3---6.文字阴影
- Android深入浅出系列之实例应用—手机页面之间的跳转
- fifo java_java linux fifo文件通信
- 登录时本地保存账号密码及关闭ARC的方法
- oracle分页查询加总数,oracle count 百万级 分页查询记要总数、总条数优化
- rabbitmq进阶一
- python应声虫代码_前端大牛们都学过哪些东西?
- python用scrapy爬虫豆瓣_Python-用Scrapy爬取豆瓣电影
- fatal: unable to access ‘https://XXXXX‘: : OpenSSL SSL_read: Connection was reset, errno 10054……
- 中国天然金红石市场趋势报告、技术动态创新及市场预测
- Nginx多进程高并发、低时延、高可靠机制在滴滴缓存代理中的应用
- php listen命令,开启队列时,命令行输入php think queue:listen出现乱码
- 六轴传感器使用学习记录
- 无线路由器pppoe服务器,详解Volans飞鱼星路由器怎么设置PPPOE服务器
- 【Android工具】盘点几个有应用历史版本功能的应用商店
- 鼠标悬停显示禁用图标
- 双鱼座男适合学计算机专业,双鱼座男生适合的职业是什么
- 细雨湿衣看不见 闲花落地听无声
- nginx设置IP、文件目录、请求头白名单
- PHP人民币小写数字转大写中文