1. 程式人生 > >一些不安全的常用的C函式

一些不安全的常用的C函式

1 gets()
  gets()由於不能進行拷貝了的buffer的size指定、所以有BufferOverflow的問題。使用代替函式進行Buffer的Size指定,

      或者使用fgets()。

2 scanf()
  不使用scanf()、把scanf_s()、sscanf()作為代替函式來使用。

3 strcpy()
  strcpy()不檢查copy先的Buffer的Size,所以有Buffer Overflow問題。請務必使用按照strncpy_s()、strcpy_s()、

      strncpy()等不同環境而準備的安全度很高的函式。

      另外、即使是使用安全度很高的函式,由於用法方面的原因,也可能發生Buffer Overflow,

      請注意如下幾點。不要在strcpy_s()、strncpy_s()進行Buffer Size的誤指定。

4 strcat()
  strcat()不會進行檢查Buffer的長度檢查,所以有BufferOverflow問題。請使用按照strncat_s()?、strcat_s()、strncat()等環境

      而準備的安全度很高的函式。

      另外、即使是使用安全度很高的函式,由於用法的原因也會產生BufferOverflow。

      所以請注意如下幾點。 strcat_s()、strncat_s()不進行Buffer長度的誤指定。

5 sprintf()
  使用按照sprintf_s()、snprintf()等的環境分別準備的安全度很高的函式。

      另外、非常古老的UNIX/Linux系統中、特別是Linux的libc4的古老版本中的snprintf()等的BufferOverflow實際上是不能避免的,

      所以請注意。