如果您的代碼是不會被其他代碼調用的應用程序的一部分,那么安全性很簡單,并且可能不需要特殊的編碼。但請記住,惡意代碼可以調用您的代碼。雖然代碼訪問安全性機制可以阻止惡意代碼訪問資源,但此類惡意代碼仍然可以讀取可能包含敏感信息的字段或屬性的值。
此外,如果您的代碼可以從 Internet 或其他不可靠的來源接受用戶輸入,則必須小心惡意輸入。
有關詳細信息,請參閱本文的確保狀態數據的安全和用戶輸入。
本機代碼實現的托管包裝程序通常在此情況下,某些有用的功能是在本機代碼中實現的,并且您想在不改寫它的情況下將其用于托管代碼。托管包裝程序很容易編寫為平臺調用或使用 COM 互操作。但是,如果您這樣做,包裝程序的調用方必須擁有非托管代碼的權利,調用才能成功。在默認策略下,這意味著從 Intranet 和 Internet 下載的代碼將不會與包裝程序配合工作。
更好的方法是將這些非托管代碼權利只授予包裝程序代碼,而不要授予使用這些包裝程序的所有應用程序。如果基礎功能很安全(不公開任何資源)并且實現也很安全,則包裝程序只需要斷言它的權利,這將使任何代碼都能夠通過它進行調用。如果涉及到資源,則安全編碼應與下一部分中描述的庫代碼情況相同。因為包裝程序向調用方潛在地公開了這些問題,所以需要對本機代碼的安全性進行仔細驗證,這是包裝程序的責任。
有關詳細信息,請參閱本文的非托管代碼和評估權限部分。
公開受保護資源的庫代碼這是功能最強大因此也是潛在最危險(如果方法不正確)的安全編碼方式:您的庫充當了其他代碼用來訪問特定資源(這些資源以其他方式是不可用的)的接口,正如 .NET 框架類對它們所使用的資源施加權限一樣。無論在哪里公開資源,代碼都必須先請求適用于資源的權限(即,執行安全檢查),然后通常需要斷言它執行實際操作的權利。
有關詳細信息,請參閱本文的非托管代碼和評估權限部分。
安全編碼的最佳做法注 除非另行指定,代碼示例都是用 C# 編寫的。
權限請求是使代碼獲得安全性的好方法。這些請求可讓您做兩件事:
•請求代碼運行所必需的最低權限。
•確保代碼所接收的權限不會超過它實際需要的權限。
例如:
[assembly:FileIOPermissionAttribute (SecurityAction.RequestMinimum, Write="C:\\test.tmp")] [assembly:PermissionSet (SecurityAction.RequestOptional, Unrestricted=false)] …SecurityAction.RequestRefused_
文章來源于領測軟件測試網 http://www.kjueaiud.com/