熱門關(guān)鍵字:  聽力密碼  新概念美語  單詞密碼  巧用聽寫練聽力  零起點

程序員十大安全技巧

來源:轉(zhuǎn)自:http://xch6636.51.net 作者: 時間:2010-04-06



圖 :檢查

  那么怎樣解決這個小問題呢?除了首先確保不出現(xiàn)任何緩沖區(qū)溢出外,還要記住最小授權(quán)原則。如果您的代碼不需要具有 SYSTEM 這樣大的權(quán)限,則不要將 Web 應(yīng)用程序配置為在 Web 服務(wù)器進程中運行。如果只是將 Web 應(yīng)用程序配置為在中等或較高的隔離環(huán)境中運行,您的進程標(biāo)記將會是 IWAM_MACHINE。您實際上沒有任何權(quán)限,因而這種攻擊幾乎不會生效。注意,在 IIS 6.0(即將成為 Windows .NET Server 的一個組件)中,默認(rèn)情況下用戶編寫的代碼不會作為 SYSTEM 運行。基于這樣的認(rèn)識,即開發(fā)人員確實會犯錯誤,Web 服務(wù)器就減少賦予代碼的權(quán)限而提供的任何幫助都是有益的,以免萬一代碼中存在安全問題。

  下面是另外一個 COM 程序員可能遇到的隱患。COM 有一個不好的傾向就是敷衍線程。如果您調(diào)用一個進程內(nèi) COM 服務(wù)器,而其線程模型與調(diào)用線程的模型不匹配,則 COM 會在另一個線程上執(zhí)行調(diào)用。COM 不會傳播調(diào)用者線程上的模擬標(biāo)記,這樣結(jié)果就是調(diào)用會在進程的安全環(huán)境中執(zhí)行,而不是在調(diào)用線程的安全環(huán)境中。多么令人吃驚!

  下面是另一個由模擬帶來的隱患的情況。假設(shè)您的服務(wù)器接受通過命名管道、DCOM 或 RPC 發(fā)送的請求。您對客戶端進行身份驗證并模擬它們,通過模擬以它們的名義打開內(nèi)核對象。而您又忘了在客戶端斷開連接時關(guān)閉其中的一個對象(例如一個文件)。當(dāng)下一個客戶端進入時,您又對其進行身份驗證和模擬,猜猜會發(fā)生什么?您仍然可以訪問上一個客戶端“遺漏”的文件,即使新的客戶端并沒有獲得訪問該文件的權(quán)限。出于運行性能的原因,內(nèi)核僅在第一次打開對象時對其執(zhí)行訪問檢查。即使您后來因為模擬其他用戶而更改了安全環(huán)境,您還是可以訪問此文件。 以上提及的這些情況都是為了提醒一點,即模擬為服務(wù)器開發(fā)人員提供了方便,但這種方便卻具有很大隱患。在您采用一個模擬標(biāo)記運行程序時,務(wù)必要對自己的代碼多加注意。

  10. 編寫非管理員用戶可以實際使用的應(yīng)用程序

  這確實是最小授權(quán)原則的必然結(jié)果。如果程序員繼續(xù)開發(fā)這樣的代碼,使得必須是管理員身份的用戶才能在 Windows 上正常運行,我們就不能期望提高系統(tǒng)的安全性。Windows 有一套非常穩(wěn)定的安全功能,但是如果用戶必須具有管理員身份才能進行操作,他們就不能很好地利用這些功能。

  您怎樣進行改進呢?首先,自己先嘗試一下,不以管理員身份運行。您很快就會知道使用沒有考慮安全設(shè)計的程序的痛苦。有一天,我 (Keith) 安裝一個由手持設(shè)備制造商提供的軟件,該軟件用于在我的臺式機和手持設(shè)備之間同步數(shù)據(jù)。與往常一樣,我退出了普通的用戶帳戶,然后使用內(nèi)置的管理員帳戶再次登錄,安裝了軟件,然后再次登錄到普通帳戶,并且試圖運行軟件。結(jié)果該應(yīng)用程序跳出一個對話框,說不能訪問某個所需的數(shù)據(jù)文件,接著便給出一個訪問沖突信息。朋友們,這就是某個主流手持設(shè)備廠商的軟件產(chǎn)品。對這種錯誤還有什么借口嗎?

  在運行了來自 http://sysinternals.com(英文)的 FILEMON 之后,我很快發(fā)現(xiàn)該應(yīng)用程序試圖打開一個數(shù)據(jù)文件以進行寫入訪問,而該文件與應(yīng)用程序的可執(zhí)行文件安裝在同一目錄中。當(dāng)應(yīng)用程序如預(yù)想的那樣安裝在 Program Files 目錄中時,他們絕不能試圖向該目錄寫入數(shù)據(jù)。Program Files 具有這樣一個限制訪問控制策略是有原因的。我們不希望用戶寫入這些目錄,因為這樣會很容易讓一個用戶留下特洛伊木馬程序,而讓另一個用戶去執(zhí)行。實際上,這個約定是 Windos XP 的基本標(biāo)志性要求之一。

  我們聽到太多的程序員給出借口說他們?yōu)槭裁丛陂_發(fā)代碼時選擇作為管理員身份運行。如果我們繼續(xù)忽略這一問題,只會讓事情更糟。朋友們,編輯一個文本文件并不需要管理員權(quán)限。編輯或調(diào)試一個程序也不需要管理員權(quán)限。在您需要管理員權(quán)限時,請使用操作系統(tǒng)的 RunAs 功能來運行緎。

  我們聽到太多的程序員給出借口說他們?yōu)槭裁丛陂_發(fā)代碼時選擇作為管理員身份運行。如果我們繼續(xù)忽略這一問題,只會讓事情更糟。朋友們,編輯一個文本文件并不需要管理員權(quán)限。編輯或調(diào)試一個程序也不需要管理員權(quán)限。在您需要管理員權(quán)限時,請使用操作系統(tǒng)的 RunAs 功能來運行具有較高權(quán)限的單獨的程序。如果您是在編寫給開發(fā)人員使用的工具,那么您將對這個群體負(fù)有額外的責(zé)任。我們需要停止這種編寫只有以管理員身份才能運行的代碼的惡性循環(huán),要達到這一目標(biāo),我們必須從根本上發(fā)生改變。

最新評論共有 0 位網(wǎng)友發(fā)表了評論
發(fā)表評論
評論內(nèi)容:不能超過250字,需審核,請自覺遵守互聯(lián)網(wǎng)相關(guān)政策法規(guī)。
用戶名: 密碼:
匿名?
注冊
數(shù)據(jù)結(jié)構(gòu)——C語言(微課版)數(shù)據(jù)通信與計算機網(wǎng)絡(luò)(第三版)用英語介紹中國傳統(tǒng)文化UML系統(tǒng)建模及系統(tǒng)分析與設(shè)計(第二版)電工電子技術(shù)實驗指導(dǎo)書普通高校專升本考試——公共英語(一)大學(xué)生職業(yè)生涯發(fā)展與規(guī)劃電工學(xué)(多學(xué)時)學(xué)習(xí)輔導(dǎo)與習(xí)題全解
宁化县| 章丘市| 霞浦县| 枝江市| 金平| 辽中县| 呈贡县| 威海市| 崇礼县| 万州区| 印江| 筠连县| 甘南县| 庆阳市| 大余县| 都匀市| 琼中| 清流县| 亳州市| 改则县| 唐海县| 沈丘县| 自治县| 阿尔山市| 石屏县| 翼城县| 天长市| 东安县| 邵东县| 桂林市| 噶尔县| 永春县| 克东县| 额敏县| 兴隆县| 岑巩县| 九龙坡区| 遵义县| 珠海市| 新沂市| 寿宁县|