轉自:
http://www.ibm.com/developerworks/cn/security/buffer-defend/index.html
函數 |
嚴重性 |
解決方案 |
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 |
低危險 |
確保緩沖區大小與它所說的一樣大。 |
posted on 2007-07-10 11:46
破繭而出 閱讀(2039)
評論(0) 編輯 收藏 所屬分類:
C/C++