安全編碼原則之程序內(nèi)部安全二
3)最小化反饋:最小化反饋是指在程序內(nèi)部處理時(shí),盡量將少的信息反饋到運(yùn)行界面來,即避免給予不可靠用戶過多的信息,防止不可靠用戶據(jù)此猜測(cè)軟件程序的運(yùn)行處理機(jī)制。最小化反饋可以用在成功的流程,也可以用在發(fā)生錯(cuò)誤的流程中。典型的例子如用戶名和口令認(rèn)證程序,不管用戶是用戶名輸入錯(cuò)誤還是口令輸入錯(cuò)誤,認(rèn)證端都只反饋統(tǒng)一的“用戶名/口令錯(cuò)誤”,而不是分別告知“用戶名錯(cuò)誤”和“口令錯(cuò)誤”,這樣可以避免讓攻擊者猜測(cè)已經(jīng)存在的用戶名,并根據(jù)用戶名來猜測(cè)口令。當(dāng)然,作為軟件程序的跟蹤檢查日志,可以記錄較為詳細(xì)的程序運(yùn)行信息,而這些信息是只允許有權(quán)限的人員查看。
4)避免競(jìng)爭(zhēng)條件:競(jìng)爭(zhēng)條件一般涉及一個(gè)或多個(gè)進(jìn)程訪問某個(gè)共享資源(如某個(gè)文件或變量),這些進(jìn)程在訪問共享資源時(shí)沒有適當(dāng)?shù)乜刂疲绻浖绦蚴芾в诨ハ嗟却龑?duì)方釋放資源時(shí),死鎖就發(fā)生了。例如,如果進(jìn)程l鎖定了資源A并等待資源B,而進(jìn)程2鎖定了資源B并等待資源A,死鎖就發(fā)生了。一種簡單的死鎖解決方案是要求所有進(jìn)程按相同順序鎖定資源。
5)安全使用臨時(shí)文件:很多安全漏洞發(fā)生在訪問已知文件名或可猜測(cè)的臨時(shí)文件時(shí)。常見的情況是,程序在一個(gè)臨時(shí)目錄中打開一個(gè)文件,然后就將數(shù)據(jù)寫到文件中,然而,如果攻擊者預(yù)先創(chuàng)建一個(gè)符號(hào)鏈接,將這個(gè)臨時(shí)文件指向其他文件,就有可能將數(shù)據(jù)寫到那些文件中。安全使用臨時(shí)文件辦法包括:不在/tmp建立臨時(shí)文件,使用隨機(jī)名建立臨時(shí)文件,在往文件中寫人數(shù)據(jù)之前檢查文件是否已經(jīng)存在,使用系統(tǒng)接口來建立臨時(shí)文件等。