• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    針對軟件測試開發技術 .NET 框架的安全編碼指南

    發布: 2009-8-17 10:54 | 作者: 不詳 | 來源: 領測軟件測試網 | 查看: 85次 | 進入軟件測試論壇討論

    領測軟件測試網

    可以將 LinkDemands 放在接口上,以有選擇地挑出某些接口,使其不能由部分信任的代碼使用(例如,在使用 AllowPartiallyTrustedCallers 屬性時)。

    如果在不包含 AllowPartiallyTrustedCallers 屬性的程序集中定義接口,則可以在部分信任的類上實現該接口。

    如果將 LinkDemand 放在一個實現接口方法的類的公共方法上,在隨后強制轉換到該接口并調用該方法時,將不會執行 LinkDemand。在這種情況下,因為是對接口進行鏈接,所以只考慮接口上的 LinkDemand。

    應當審閱以下各項是否有安全問題:

    接口方法上的顯式鏈接請求。確保這些鏈接請求提供了預期的保護。確定惡意代碼是否可以使用強制轉換來避開前面描述的鏈接請求。

    具有鏈接請求的虛擬方法。

    它們實現的類型和接口應當一致地使用 LinkDemands。

    虛擬內部重寫

    在確認代碼對其他程序集不可用時,需要了解類型系統可訪問性的細微差別。聲明 virtual 和 internal 的方法可以重寫超類的 vtable 條目,并且只能在同一個程序集的內部使用,因為它是內部的。但是,重寫的可訪問性是由 virtual 關鍵字決定的,并且只要代碼能夠訪問類本身,就可以從另一個程序集對該可訪問性進行重寫。如果重寫的可能性比較小,請使用聲明性安全解決它,或者刪除 virtual 關鍵字(如果它不是必需的)。

      包裝程序代碼

    包裝程序代碼(特別是在包裝程序比使用它的代碼具有更高可信度時)可以顯露一組獨特的安全漏洞。如果沒有將調用方的受限制權限包括在適當的安全檢查中,則代表調用方所執行的任何操作都是可能被利用的潛在漏洞。

    不要通過包裝程序來啟用調用方本身無法執行的某些操作。在執行某些涉及受限制安全檢查的操作時(與完整的堆棧審核請求相反),會有特殊的危險性。涉及到單一級別的檢查時,在實際調用方與可疑 API 元素之間插入包裝程序代碼,可以很容易地使安全檢查在不應當成功時成功通過,從而降低了安全性。

    委托

    無論何時,如果您的代碼從可能調用它、但信任度較低的代碼那里取得委托權,請確保您不會讓信任度較低的代碼提升它的權限。如果您取得委托權并隨后使用它,那么,如果委托中或委托下面的代碼試圖執行受保護的操作,則創建委托的代碼將不會在調用堆棧中,并且不會測試它的權限。如果您的代碼和委托代碼具有比調用方更高的特權,這將使調用方能夠在不成為調用堆棧一部分的情況下改變調用路徑。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>