C语言编程安全规范

news/发布时间2024/9/20 5:39:42
  1. 目的
    本规范旨在加强编程人员在编程过程中的安全意识,建立编程人员的攻击者思维,养成安全编码的习惯,编写出安全可靠的代码。
    2 宏
    2.1 用宏定义表达式时,要使用完备的括号
    在这里插入图片描述
    2.2 使用宏时,不允许参数发生变化
    在这里插入图片描述
    3 变量
    3.1 所有变量在定义时必须赋初值
    变量声明赋予初值,可以避免由于编程人员的疏忽导致的变量未初始化引用。
    在这里插入图片描述
    4 表达式
    4.1 浮点变量不可使用“==”或“!=”与任何数字比较。
    4.2 逻辑运算符 && 或 || 的右手操作数不能包含副作用
    在这里插入图片描述4.3 不允许对有符号、浮点数进行位操作
    在这里插入图片描述
    控制语句
    5.1 避免 goto 语句
    避免使用 goto 语句,如特殊情况需要使用,先考虑使用 do {}while(0)语句替代。
    在这里插入图片描述
    6 函数
    6.1 函数功能要专一
    一个函数只做一件事情,如果函数体代码量过大,要重新检查是否需要将函数进行拆分,保持函数
    的内聚性。
    6.2谨慎使用不可重入函数
    要实现可重入函数而非不可重入函数:在函数体内使用局部变量,避免使用静态变量和全局变量。
    如果函数体内使用到全局变量或静态变量,要对其进行保护。不可重入函数在多线程环境下其执行
    结果不能达到预期效果,需谨慎使用。
    6.3 减少函数本身或函数间的递归调用
    递归调用特别是函数间的递归调用(如 A->B->C->A),影响程序的可理解性;递归调用一般都占
    用较多的系统资源;递归调用对程序的测试有一定影响。故除非为某些算法或功能的实现方便,应
    减少没必要的递归调用。
    6.4 标准库中保留的标识符、宏和函数不能被定义、重定义
    在这里插入图片描述
    6.5 外部函数要检查输入参数的有效性
    对于外部函数要检查所有输入参数的有效性,以及非输入参数的有效性:如全局变量,静态变量。
    内部函数不对参数有效性检查,由它的调用者对参数进行有效性检查。
    在这里插入图片描述
    6.6 防止将函数的参数作为工作变量
    防止将函数的参数作为工作变量,对必须要改变参数,最好用局部变量代之,最后再将局部变量的内容赋给该参数。
    在这里插入图片描述
    在这里插入图片描述
    6.7 如果一个函数可能返回错误信息,则调用后必须加以测试。
    6.8 传递给库函数的值必须检查其有效性
    库函数对传入的参数可能不会做有效性检查,因此程序应对传给库函数的参数进行有效性检查。
    6.9 不使用不安全函数
    不要使用安全函数,避免给系统造成不稳定性。如果不要使用一些已形成共识的 C 标准库的高危
    险函数。
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程老四网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

关于页表,页号,物理块号的例题

课本上的图解 题目:在分页系统中地址结构长度为16位,页面大小为2K,作业地址空间为6K,该作业的各页依次存放在2、3、6号物理块中,相对地址2500处有一条指令store 1, 4500,请给出该作业的页表,该指令的物理单…

css5定位

css 一.定位1.概念(定位定位模式边位移)2.静态位移static(不常用)3.相对定位relative(不脱标)(占位置)4.绝对定位absolute(脱标)(不占位置&#x…

Thomson(汤姆森)简化了其螺旋千斤顶产品的CAD选型配置

线性运动控制解决方案提供商Thomson在其在线工程设计工具中添加了独特的螺旋千斤顶配置和选择工具。新的Thomson螺旋千斤顶产品选型器可帮助设计工程师优化和选定螺旋千斤顶,以满足高达100吨的负载应用。 Thomson螺旋千斤顶产品系列负责人Mitch Katona说&#xff1…

Java学习--学生管理系统(残破版)

代码 Main.java import java.util.ArrayList; import java.util.Scanner;public class Main {public static void main(String[] args) {ArrayList<Student> list new ArrayList<>();loop:while (true) {System.out.println("-----欢迎来到阿宝院校学生管理系…

docker (十二)-私有仓库

docker registry 我们可以使用docker push将自己的image推送到docker hub中进行共享&#xff0c;但是在实际工作中&#xff0c;很多公司的代码不能上传到公开的仓库中&#xff0c;因此我们可以创建自己的镜像仓库。 docker 官网提供了一个docker registry的私有仓库项目&#…

MySQL的21个SQL经验

1. 写完SQL先explain查看执行计划(SQL性能优化) 日常开发写SQL的时候,尽量养成这个好习惯呀:写完SQL后,用explain分析一下,尤其注意走不走索引。 explain select userid,name,age from user where userid =10086 or age =18;2、操作delete或者update语句,加个limit(S…

C#之WPF学习之路(5)

目录 内容控件&#xff08;2&#xff09; TextBlock文字块 TextBox文本框 TextBoxBase基类 TextBox控件 RichTextBox富文本框 ToolTip控件&#xff08;提示工具&#xff09; Popup弹出窗口 Image图像控件 属性成员 事件成员 内容控件&#xff08;2&#xff09; Tex…

Maven【4】(继承)(命令行操作)

文章目录 【1】基础概念【2】继承的作用【3】创建父工程和子工程【4】在父工程中统一管理依赖 【1】基础概念 说到继承&#xff0c;我们很容易想到Java中的继承&#xff0c;有子类和父类&#xff0c;子类继承父类&#xff0c;那么我们maven中的继承是什么呢&#xff1f; Maven…

海外媒体推广发稿平台之选快速提升品牌知名度的8个方法-华媒舍

随着全球化趋势的加深&#xff0c;海外市场对于企业来说变得越来越重要。在海外媒体上宣传品牌是提升知名度和开拓新客户的关键步骤。本文将为您介绍8个使用海外媒体推广发稿平台来快速提升品牌知名度的秘籍。 1. 选择可信赖的平台 在选择推广发稿平台时&#xff0c;首先要确保…

化妆品汞含量检测FDA 21 CFR700.13 标准

化妆品汞含量检测FDA 21 CFR700.13 标准 化妆品汞含量检测FDA 21 CFR700.13 标准 汞是一种有毒的元素&#xff0c;在化妆品中是一种禁用的成分。然而&#xff0c;汞在一些非正规的产品中仍然存在&#xff0c;给消费者的健康带来了潜在的危害。因此&#xff0c;对于化妆品生产企…

正向代理的反爬虫与防DDoS攻击:保护网站免受恶意行为

目录 前言 一、正向代理的原理 二、正向代理的反爬虫功能 1. IP地址隐藏 2. 请求多样化 三、正向代理的防DDoS攻击功能 1. 均衡负载 2. IP过滤 结论 前言 在当前互联网环境下&#xff0c;网站常常受到各种恶意行为的侵袭&#xff0c;其中包括爬虫和DDoS攻击。这些行为…

Android java基础_异常

一.异常的概念 在Java中&#xff0c;异常&#xff08;Exception&#xff09;是指程序执行过程中可能出现的不正常情况或错误。它是一个事件&#xff0c;它会干扰程序的正常执行流程&#xff0c;并可能导致程序出现错误或崩溃。 异常在Java中是以对象的形式表示的&#xff0c;…

我的NPI项目之设备系统启动(八) -- Android14的GKI2.0开发步骤和注意事项

GKI是什么&#xff1f; Google为什么要推行GKI&#xff1f; GKI全称General Kernel Image。GKI在framework和kernel之间提供了标准接口&#xff0c;使得android OS能够轻松适配/维护/兼容不同的设备和linux kernel。 Google引入GKI的目的是将Framework和Kernel进一步的解耦。因…

Peter算法小课堂—动态规划

Peter来啦&#xff0c;好久没有更新了呢 今天&#xff0c;我们来讨论讨论提高组的动态规划。 动态规划 动态规划有好多经典的题&#xff0c;有什么背包问题、正整数拆分、杨辉三角……但是&#xff0c;如果考到陌生的题&#xff0c;怎么办呢&#xff1f;比如说2000年提高组的…

Nacos配置

目录 启动nacos 项目步骤 Nacos服务分级存储模型​编辑 服务跨域集群调用问题 NacosRule负载均衡 服务实例的权重设置 环境隔离-namespace Nacos环境隔离 Nacos和Eureak对比 临时实例和非临时实例 Ncaos与Eureka的共同点 Nacos与Eureka的区别 Nacos配置管理 统一配…

我承认,我低估鸿蒙了 !

2019年&#xff0c;鸿蒙刚出来的时候&#xff0c;我心里是有点犯嘀咕的&#xff0c;虽然很支持国产操作系统&#xff0c;但是我知道&#xff0c;开发操作系统也许不难&#xff0c;但是建立一个全新的生态太难了&#xff01; 如果操作系统中缺乏应用程序&#xff0c;就不会有人…

排序——希尔排序

希尔排序 希尔排序步骤 希尔排序的核心还是插入排序&#xff0c;但是把插入排序分成两部分&#xff0c;1.预排序2.插入排序。先对原数组进行预排序&#xff0c;使数组接近有序&#xff08;让更大的数字和更小的数字更快的分配到两边&#xff09;&#xff0c;然后再对已经接近有…

模拟算法题练习(二)(DNA序列修正、无尽的石头)

目录 &#xff08;一、DNA序列修正&#xff09; 问题分析 方法实现 时间复杂度和空间复杂度分析 &#xff08;二、无尽的石头&#xff09; &#xff08;一、DNA序列修正&#xff09; 问题描述 在生物学中&#xff0c;DNA序列的相似性常被用来研究物种间的亲缘关系。现在我…

MySQL深入——22

kill不掉的语句 在MySQL当中有两个kill命令一个是kill query 线程id表示中止这个线程当中正在执行的语句&#xff0c;另外一个是 kill Connection线程id表示断开这个连接。 在使用MySQL时&#xff0c;使用kill命令之后看show processlist显示的command列为killed&#xff0c;…

《最新出炉》系列初窥篇-Python+Playwright自动化测试-34-处理https 安全问题或者非信任站点-下篇

1.简介 这一篇宏哥主要介绍playwright如何在IE、Chrome和Firefox三个浏览器上处理不信任证书的情况&#xff0c;我们知道&#xff0c;有些网站打开是弹窗&#xff0c;SSL证书不可信任&#xff0c;但是你可以点击高级选项&#xff0c;继续打开不安全的链接。举例来说&#xff0c…
推荐文章