c语言很灵活,功能强大,灵活的好处是容易使用,但是不好的地方就是需要注意很多规则来保证代码的鲁棒性。安全编程需要注意的点右: 1.避免使用全局变量和静态局部变量,中间过程的值被修改以后,会改变程辉潜在运行的逻辑和功能函数的输出。 2.C语言右很多外部输入函数,可以接受外部输入指令。比如Scanf等等。由于C语言的规则,很多特殊的支付会被当做命令符来处理,所以外部输入就容易被利用。所以必须检查外部输入的长度,大小合法性等等 3.所有的变量都必须要初始化初值 4.尽量使用简单的函数。避免使用功能复杂的函数例如Realloc 5.在进行内存操作的时候要时刻注意:内存空间的开辟与释放,开辟是否成功,开辟空间的时候,如果变量是功能函数外部写入的话,要做安全性检查 6.不要改变操作系统的环境 7.合理使用断言 外部命令包括: 1.环境变量, 2,用户输入 3,文件输入 4,全局变量 5,用户态数据 6,注册变信息 7,网络信息 8,函数输入 9,进程间的通讯 10,命令行
可重入的功能函数: strtok_s/malloc/read/fork/strcpy/socket 不可重入的函数比较多: rand srand/getenv getenv_s/strok strerr/asctime ctime localtime gmtime setlocale /atomic-init /tmpnam/mbrtoc16/c16tomb mbrtoc32 c32rtomb gethostbyadd/ gethostbyname/inet-ntoa/printf he cout
|