安全編碼原則之安全調用組件
4.安全調用組件
軟件程序幾乎都不會是自包含的,它們通常都會調用其他組件,包括底層的操作系統、。 數據庫系統、可重用的庫、Internet服務(例如DNS)、‘Web服務等。這種組件調用極大地促進了軟件的發展,能讓軟件開發者集中精力開發自己的功能模塊,并借用其他方為用戶提供更為強大的功能服務。但是,這種組件調用同時存在很大的安全問題,即攻擊者可能更為方便地利用組件發起攻擊。為避免調用組件帶來安全問題,建議在組件安全、返回值安全以及傳遞數據安全等幾個方面加強安全防護。
1)組件安全:盡量使用自己或可信的組件,對第三方組件,應當能在具有更為詳細的安全說明、獲得更安全的信心,甚至是只有經過安全認證后才可以調用。在選用可用組件的時候,應當廣泛地了解該組件是否存在安全問題,或搜索獲得更廣泛應用、被公眾檢驗過不存在問題的公共組件。在正是調用任何組件之前,即使只可能調用很小的一個函數,應當先對其進行考察,獲取有關使用文檔,了解其中是否提及了安全性警告。
2)返回值安全:當調用的組件函數返回時,應當對返回值進行檢查,確保所調用的函數“正確”處理、結果“正確”地返回。這里正確是指被調用的組件函數按照規定的流程和路
徑運行完成,其中包括成功的執行路徑,也可能包括錯誤的處理路徑。當組件函數調用成功時應當檢查返回值,確保組件按照期望值處理,并且返回結果符合期望,如執行reacl(2)時,所讀取的字節數可能少于所請求的字節數;當組件函數調用錯誤時應當檢查返回值和錯誤碼,以得到更多的錯誤信息。
3)傳遞數據安全:畢竟軟件程序和被調用組件之間是通過系統或網絡調用,在兩者之間傳遞數據時,攻擊者可能可以讀到或篡改這些傳遞的數據,尤其當這些數據通過網絡進行傳遞時。因此,需要采取安全措施,確保攻擊者不會讀取或篡改軟件程序和被調用組件之間傳遞的數據。通常可供參考使用的安全措施包括數據加密和采用安全協議,常見的數據加密算法包括DES、AES、RSA等,安全協議包括TLS、IPSec和OpenSSH等。
- 上一篇:安全編碼原則之程序內部安全二
- 下一篇:安全編碼原則之禁止使用不安全函數