不安全函数(转)
這些函數由于設計的時候比較淳樸,并沒有做任何的越界檢測,主要容易”被溢出”,只需要多設點檢查邊界,即安全。
| 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 | 低危險 | 確保緩沖區大小與它所說的一樣大。 |
來自為知筆記(Wiz)
轉載于:https://www.cnblogs.com/liuzhanshan/p/5277685.html
總結
- 上一篇: 软件项目管理(1)
- 下一篇: Oracle导出excel