C语言中不安全的函数

来源:互联网 发布:centos把ssh端口号改了 编辑:程序博客网 时间:2024/06/01 10:46

这些函数由于设计的时候比较淳朴,并没有做任何的越界检测,主要容易"被溢出",只需要多设点检查边界,即安全。


函数严重性解决方案gets最危险使用 fgets(buf, size, stdin)。这几乎总是一个大问题!strcpy很危险改为使用 strncpy。strcat很危险改为使用 strncat。sprintf很危险改为使用 snprintf,或者使用精度说明符。scanf很危险使用精度说明符,或自己进行解析。sscanf很危险使用精度说明符,或自己进行解析。fscanf很危险使用精度说明符,或自己进行解析。vfscanf很危险使用精度说明符,或自己进行解析。vsprintf很危险改为使用 vsnprintf,或者使用精度说明符。vscanf很危险使用精度说明符,或自己进行解析。vsscanf很危险使用精度说明符,或自己进行解析。streadd很危险确保分配的目的地参数大小是源参数大小的四倍。strecpy很危险确保分配的目的地参数大小是源参数大小的四倍。strtrns危险手工检查来查看目的地大小是否至少与源字符串相等。realpath很危险(或稍小,取决于实现)分配缓冲区大小为 MAXPATHLEN。同样,手工检查参数以确保输入参数不超过 MAXPATHLEN。syslog很危险(或稍小,取决于实现)在将字符串输入传递给该函数之前,将所有字符串输入截成合理的大小。getopt很危险(或稍小,取决于实现)在将字符串输入传递给该函数之前,将所有字符串输入截成合理的大小。getopt_long很危险(或稍小,取决于实现)在将字符串输入传递给该函数之前,将所有字符串输入截成合理的大小。getpass很危险(或稍小,取决于实现)在将字符串输入传递给该函数之前,将所有字符串输入截成合理的大小。getchar中等危险如果在循环中使用该函数,确保检查缓冲区边界。fgetc中等危险如果在循环中使用该函数,确保检查缓冲区边界。getc中等危险如果在循环中使用该函数,确保检查缓冲区边界。read中等危险如果在循环中使用该函数,确保检查缓冲区边界。bcopy低危险确保缓冲区大小与它所说的一样大。fgets低危险确保缓冲区大小与它所说的一样大。memcpy低危险确保缓冲区大小与它所说的一样大。snprintf低危险确保缓冲区大小与它所说的一样大。strccpy低危险确保缓冲区大小与它所说的一样大。strcadd低危险确保缓冲区大小与它所说的一样大。strncpy低危险确保缓冲区大小与它所说的一样大。vsnprintf低危险确保缓冲区大小与它所说的一样大。
0 0