Web應用程序比客戶端應用程序更難保證安全性,因為它不像web服務器有四五個主要供應商的web服務器,它有大量的web應用程序和自定義腳本數量,而且每個都可能包含潛在的漏洞。對于開發人員來說,確保應用程序安全的最佳方法是使用建議的安全措施和可以掃描代碼的軟件,并提醒用戶潛在的安全問題。管理員需要定期掃描其Web站點中的漏洞。
應用程序的安全性主要是由應用程序的開發者控制的。管理員可以緊固一些應用程序的安全性,但是如果應用程序本身不安全,便不可能確保其安全。
編寫安全的應用程序是困難的,因為應用程序的各個方面,如圖形用戶界面,網絡連接,操作系統交互,和敏感數據的管理,需要大量的安全知識以確保其安全。大多數程序員不具備這方面的知識或不考慮用應用程序安全的重要性來衡量額外工作。
但從管理者的角度來看,有一些安全問題要謹記在心:
運行權限權限
應用程序管理
應用程序更新
與操作系統集成的安全性
遠程管理安全
會話安全
要素一:運行權限管理
管理員應該盡可能設置應用程序的低權限性。這樣做可以防止多種電腦威脅:
如果應用程序被攻擊者利用,他們將擁有應用程序的特權。如果該權限是足夠低的,攻擊者將不能進一步的攻擊。
低權限保護計算機免受嵌入式木馬(在應用程序中),因為處理木馬時擁有較少的權限。
當應用程序具有較低的權限,用戶將無法保存敏感據區域的數據(如操作系統領域),甚至不能進入核心資源。
在開發應用程序時,為了節省開發時間,程序員往往做出臆斷。其中的一些假設,需要管理權限才能訪問。這雖然削減了編程時間,但它降低了管理員保護系統安全的能力。當普通用戶被授予管理權限,可以刪除或訪問周圍的配置,威脅安全。
當安裝程序時,因為安裝程序可能需要訪問敏感的操作系統目錄,它通常需要有更高的權限,甚至管理權限。最好是先在一個相似配置的測試計算機上安裝應用程序。這樣,安裝在正式計算機之前,你可以看到是否有問題。如果應用程序并無明顯原因需要管理員權限,或者你不信任該應用程序,可以在沙盒中運行它。沙盒是一個安全應用程序,它可以攔截正在運行的應用程序的系統調用,確保應用程序將只能訪問管理員允許的資源。沙盒可以限制訪問注冊表,操作系統數據的目錄和網絡。將應用程序與敏感OS區域以及其它用戶定義的敏感數據域隔離開來。
要素二:應用程序管理
大多數應用程序提供了一些接口進行管理(主要用于應用程序配置),且每次施用方法會產生須解決的安全風險,如這些:
INI/ conf文件
GUI
基于Web的控制
管理的一個應用程序的最基本的方法是通過基于文本的文件來控制它。為了保護這樣的應用程序,管理員需要限制訪問權限。如果文件存儲在本地,可以通過內置的OS權限管理系統;如果文件存儲在其他地方,可以通過使用身份驗證登錄到遠程存儲位置(確保認證方法受保護)。
大多數應用程序有一個圖形用戶界面用于管理它們。除了在提供GUI級別的安全性,管理員應該對圖形用戶界面和應用程序之間的通信提供安全保障。
當GUI和應用程序的物理位置在同一臺計算機時,管理員應該給GUI盡可能少的權限(如有必要,應用程序可以具有較高的權限)。
要素三:應用程序更新
使用最新的安全補丁使應用程序保持更新是你可以采取的最重要的安全措施之一。本節討論一些輕松地更新應用程序的機制:
手動更新
自動更新
半自動更新
物理更新
手動更新
手動更新需要管理員手工下載一個文件(或使用所提供的媒體,如CD)和相關的系統上安裝更新。這個選項是最不可取的,因為它迫使管理者花額外的時間來修補一個工作系統。手動更新是非常常見的開源項目(比如Apache)。
自動更新
當應用程序使用自動更新,它會定期在網站上進行檢測,如果存在的話,它會下載并在系統上安裝它。用這種方法有兩個問題:
帶寬使用:考慮上千臺計算機組織運行相同的每天自動更新的防病毒軟件。每一天,同一個相同更新的副本被下載到成千上萬運行此程序的計算機。
安裝有問題的補丁:有時補丁(廠商通過發布更新軟件修復安全問題和漏洞)會導致弊大于利,因為補丁急于解決關鍵問題。開發商不能預見所有可能的環境,補丁可以停止應用程序或導致程序紊亂。這就是為什么測試是必要的。
半自動更新
有些應用程序允許管理員決定何時下載更新。更新下載之后,應用程序將更新的下載的分配到所有連接的客戶端。
物理更新
使用實際收到的更新來更新系統。一個有目的的攻擊者可以通過偽造一個看起來就像原版的但包含了木馬或其他惡意軟件的更新,創建一個“假的”補丁。為了反抗此類攻擊,管理員可以在廠商的網站檢查更新的大小和CRC32簽名,并與實際副本相比較。
要素四:與操作系統安全集成
當一個應用程序集成了操作系統的安全性,它可以使用的操作系統的安全信息,甚至在需要的時候修改操作系統。這有時是一個應用程序的需求,或是它可能會提供一個可選功能。操作系統安全集成允許應用程序無論是在實時操作系統的進口或訪問用戶及其權限的列表。想象一下,一個組織有幾千名員工的需要訪問中央企業資源規劃(ERP )應用程序。管理員可以手動輸入上千個用戶進入ERP的管理控制臺,以及他們的權限,但這種方法耗時且需要雙重管理。如果組織有一個以上的中央系統,需要用戶手動錄入,這種情況會更糟。
安全信息人工錄入
一個應用程序可以允許管理員導入所有的用戶信息,并用它來管理應用程序認證。雖然這種方法可能會加快應用部署,之后還會有雙重管理。例如,當一個雇員離開了組織,管理員既要從組織用戶列表中刪除用戶,也要從應用程序列表中刪除。
另一個需要考慮的問題是應用程序如何存儲用戶信息。它受保護的嗎?加密?明文存儲?如果你不信任你的應用程序的數據存儲安全,可以加密整個硬盤。
安全信息的自動集成
安全信息的自動集成允許應用程序實時查詢操作系統的用戶憑證。這樣,無論是最初的部署時間和雙重管理問題都解決了。不過,在這種情況下有兩個問題:
如果OS的用戶數據庫被刪除或丟失,應用程序不能訪問。
應用程序和操作系統之間的網絡連接的用戶數據庫必須被保護以防止攻擊者竊聽或使用假的服務器獲得信息用戶的憑據。
使用操作系統的安全授權
應用程序可以使用操作系統安全授權。在這種情況下,應用程序設置一個特殊的目錄或資源(如共享內存,一個信道或命名管道)只能由用戶誰擁有某些特權訪問和操作系統的保護,訪問該目錄或資源。
保持操作系統安全集成可選而不是必要
有時有必要部署一個小型應用程序,該應用程序將使用只有一個或兩個操作系統的安全選項。如果應用程序迫使我們使用與操作系統安全集成的選項而不顧具體的應用場景的話,那么它結果只會降低安全(如果它使用一個不安全的方法)以及降低部署速度(因為我們只有一個或兩個用戶)。此外,管理員可能不愿使應用程序能夠修改用戶目錄(和潛在的損害)。