安全編碼原則之驗證輸入中的常見的輸入源
常見的輸入源包括:
1)命令行參數(shù):有些軟件程序啟動時能接收來自命令行的參數(shù)輸人,對這些參數(shù)需要進行嚴格的檢查,包括參數(shù)的數(shù)量、格式和長度等。
2)環(huán)境變量:軟件程序中可能讀取、使用環(huán)境變量,由于常會誤認為環(huán)境變量是操作系統(tǒng)的變量j軟件開發(fā)人員容易認為其可信,從而忽視對其的驗證。環(huán)境變量作為輸入有可能存在的危險包括長度過長、內(nèi)容篡改、格式不符等。
3)文件及文件名:考慮到外部文件更容易被攻擊者篡改,因此軟件程序中讀入外部文件時,需要對文件進行驗證,檢查的內(nèi)容同樣包括長度、格式和內(nèi)容等各個方面。此外,對文件名也需要加強輸入檢查,不同的操作系統(tǒng)可能采用不同的文件命名要求,甚至對文件名的路徑保護、鏈接使用等措施也不一樣,軟件程序如果不對輸入的文件名進行檢查,可能被攻擊者利用后來篡改或刪除某些系統(tǒng)文件。
4)網(wǎng)絡數(shù)據(jù):網(wǎng)絡數(shù)據(jù)是高度不可信的。只要是通過網(wǎng)絡傳遞過來的數(shù)據(jù),不管是數(shù)據(jù)內(nèi)容本身,還是組成網(wǎng)絡包的數(shù)據(jù)頭(如表示來源IP地址區(qū)域),都是極容易被攻擊者篡改和偽造。因此,對網(wǎng)絡數(shù)據(jù)更需要進行嚴格的驗證檢查。
5)其他來源:軟件程序還存在很多其他的輸入,如信號、內(nèi)存映射、系統(tǒng)管道等,安全的程序不應當忘記對這些輸入來的數(shù)據(jù)進行驗證檢查。
對輸入的驗證檢查,具體到不同的軟件程序中有不同的要求。一般地,對字符串、數(shù)字、文件名、郵件地址、URL等不同的數(shù)據(jù)串有不同的通用性規(guī)則,如數(shù)字需要主要檢查整數(shù)溢出、合法范圍等;對郵件地址主要檢查格式、特殊字符等;對文件名主要檢查長度、特殊字符等。
- 上一篇:安全編碼原則之驗證輸入
- 下一篇:安全編碼原則之避免緩存溢出