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

news2024/11/19 13:15:40

腾讯代码安全指南旨在梳理 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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/11100.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

详解风控模型中的逻辑回归评分卡与模型评估内容

今天我们来输出一篇风控长文,关于大家熟悉关注的逻辑评分卡的开发的内容,文章篇幅较长,大纲目录如下: 建模前准备 1.1特征预处理与转化 1.2特征衍生与提取 1.3特征选择与降维 分箱 2.1分箱概述 2.2分箱方法 Woe计算 3.1 WOE 3.2…

【用户画像】功能实现值写入ClickHouse人群包、预估和更新分群人数,NoSQL数据库介绍

文章目录一 写入ClickHouse人群包1 组合查询Bitmap表SQL代码实现(1)SQL语句分析(2)实现思路(3)实现过程controller层service层Taginfo实现类mapper层2 人群包代码实现(1)配置文件&am…

一个注解干翻所有Controller

1. 概览 日常开发中,最繁琐的便是编写 Controller。很多公司都制定了规范:Controller 不能存在任何的业务逻辑,主要完成参数解析和结果转换。不过查看项目源码,你会发现 Controller 中存在了大量不该存在的逻辑,对此&…

【MFC】打砖块小游戏(下)(7)

任务点: 1、键盘左右键消息处理; 2、碰撞检测(与砖块、挡板、上、左、右); 3、控制转向; 程序shix 解决思路: 1、左右键消息处理: 响应 WM_KEYDOWN 消息,移动挡板…

【Spring】——1、使用@Configuration和@Bean给容器中注册组件

📫作者简介:zhz小白 公众号:小白的Java进阶之路 专业技能: 1、Java基础,并精通多线程的开发,熟悉JVM原理 2、熟悉Java基础,并精通多线程的开发,熟悉JVM原理,具备⼀定的线…

ArrayList详解

ArrayList是什么? ArrayList就是动态数组,是List接口的可调整大小的数组实现;除了实现List接口之外,该类还提供了一些方法来操纵内部使用的存储列表的数组大小。它的主要底层实现是数组Object[] elementData。 为什么要设计ArrayList&…

【C++】mapset利用红黑树进行简单封装

前言 大家好~~~~呀!很荣幸你能点击这篇文章。本篇也是我的一份学习笔记,让我们一起共同成长吧~ing...... C红黑树的简单插入实现博客~ 【C】红黑树的插入实现_柒海啦的博客-CSDN博客 二叉搜索树的基本结构和实现博客~ 【C】二叉搜索树_柒海啦的博客-CSDN…

java 实现一个最小栈

文章目录最小栈1.实现思路2.实现过程演示3.代码实现思路3.1 压入思路3.2 弹出思路3.3 如何返回栈顶元素的下标3.4 如何返回栈的最小值4.整体代码实现最小栈 1.实现思路 实现一个stack栈 和 minStack栈。先将数据一个一个压入到 stack 中。找到 stack 中的最小值。minStack中始…

简单介绍动态链接过程

文章目录gotgot[0] link_map结构体地址got[1] _dl_runtime_resolvegot[2]之后pltplt[0] 调用libc解析函数plt后面的plt.sec随便拿ida打开一个程序可以看到这是got的内容gdb一下查看内容,可以看到地址是从0开始的大家也知道 got是个独立的section,所以最开…

MySQL数据库(Java的数据库编程:JDBC)

作者:渴望力量的土狗 博客主页:渴望力量的土狗的博客主页 专栏:MySQL数据库 目录 什么是数据库编程: 什么是JDBC? JDBC工作原理: JDBC的使用及相关操作: JDBC开发案例: JDBC常用接口…

关于电影的HTML网页设计-威海影视网站首页-电影主题HTM5网页设计作业成品

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 文章目录一、网页介绍一…

5分钟教你如何设计一个安全web架构

今天就给大家聊聊web安全,web安全占比还是比较大的,基础的从一些html标签,到js 然后到接口,数据库,以及流量攻击,模拟请求。当然这也谈到了一个概念,全新的架构设计模式,前后端分离&…

一文讲解如何学习 Linux 内核网络协议栈

协议栈的细节 下面将介绍一些内核网络协议栈中常常涉及到的概念。 sk_buff 内核显然需要一个数据结构来表示报文&#xff0c;这个结构就是 sk_buff ( socket buffer 的简称)&#xff0c;它等同于在<TCP/IP详解 卷2>中描述的 BSD 内核中的 mbuf。 sk_buff 结构自身并不…

【毕业设计】深度学习人脸性别年龄识别系统 - python

文章目录0 前言1 课题描述2 实现效果3 算法实现原理3.1 数据集3.2 深度学习识别算法3.3 特征提取主干网络3.4 总体实现流程4 具体实现4.1 预训练数据格式4.2 部分实现代码5 最后0 前言 &#x1f525; Hi&#xff0c;大家好&#xff0c;这里是丹成学长的毕设系列文章&#xff0…

【案例分享】华为防火墙出接口方式的单服务器智能DNS配置

介绍出接口方式的单服务器智能DNS的配置举例。 组网需求 如图1所示&#xff0c;企业部署了一台ISP1服务器对外提供Web服务&#xff0c;域名为www.example.com。ISP1服务器的私网IP地址为10.1.1.10&#xff0c;服务器映射后的公网IP地址为1.1.1.10。企业的DNS服务器上存在域名w…

为什么你的用户转化率不高?-- 新媒体运营转化效果渠道归因分析

新媒体运营人最关注的就是流量和用户转化问题。公司发布了新APP、上线了新网站项目&#xff0c;进行用户定位、策划、数据分析和内容营销&#xff0c;花重钱做产品推广&#xff0c;但最后用户转化率却不高&#xff0c;大批用户流失了......这种现象是运营人最不愿意看到的&…

老杨说运维|今年这个会议非比寻常

前言&#xff1a; 人民银行印发的《金融科技(FinTech)发展规划(2022-2025年)》中&#xff0c;重点围绕数字化转型建设&#xff0c;强调上云、数据基础建设以及数智应用的重要性&#xff0c;明确了金融科技的长期重点建设方向。 由金科创新社主办的“2022金融业新一代数据中心发…

kwebio/kweb-core:面向后端的轻量级 Kotlin Web 框架

现代网站至少由两个紧密耦合 的组件组成&#xff0c;一个在浏览器中运行&#xff0c;另一个在服务器上。它们通常用不同的编程语言编写&#xff0c;并且必须通过 HTTP(S) 连接相互通信。 Kweb 的目标是消除这种服务器/浏览器分离&#xff0c;这样您就可以专注于构建您的网站或用…

react多组件出错其他正常显示

问题&#xff1a;一个组件内部有很多个子组件&#xff0c;其中一个出错&#xff0c;怎么实现其他组件可以正常显示&#xff0c;而不是页面挂掉&#xff1f; 一、错误边界 可以捕获发生在其子组件树任何位置的 JavaScript 错误&#xff0c;并打印这些错误&#xff0c;同时展示…

CC攻击和DDOS攻击哪个对服务器影响更大

互联网企业&#xff0c;不管是小企业&#xff0c;还是大企业&#xff0c;大多数企业网站都遭受过攻击&#xff0c;而我们时不时的也能在网上看见某大型企业网站被攻击&#xff0c;崩溃的新闻&#xff0c;网络攻击可以说是屡见不鲜了。攻击力最常见的就是DDOS攻击和CC攻击&#…