我有一個接口,實現類通過MEF在我的應用程序中導出。實現類在單獨的程序集中,並且在編譯時不知道(想想插件)。防止通過接口攔截呼叫
該接口基本上包含一個調用,該調用說'這裏是一串鍵值對,現在初始化您的許可狀態'。即
public LicensingInfo InitialiseLicense(IEnumerable<KeyValuePair<string, string>> keys)
我想知道的是 - 是否有保護該接口從「中間人」執行的方法嗎?即一個接收來自我的應用程序的調用,然後用不同的一組鍵 - 值對在插件程序集上調用相同的方法,基本上說'是 - 在這裏你去 - 有一切'。
我的確嘗試過用不同的方式,因爲應用程序會調用插件程序集並傳入一個可以查詢的對象。這種方法可能是這個樣子:
public LicensingInfo InitialiseLicense(ILicenseQueryProvider provider)
然而,再次用這種方法我認爲,攔截對象可能只是簡單地給不同的供應商庫。
那麼,有沒有一種方法可以防止這種接口攔截,或者我應該重構它,使插件程序集完全負責許可證載入等自己的代碼中?或者,還有另外一種方式,或許我可以重構它,但我沒有考慮過它?
如果攻擊者可以在機器上放置代碼,他已經擊敗了你。 – SLaks
有信任關係嗎?例如,插件開發人員相信您會向他傳遞一組代表用戶的密鑰,並確定用戶有權訪問哪些內容?或者你正在開發雙方,但你想確保你的用戶沒有設法攔截你的電話,並允許他自己訪問所有的數據? –
@ChrisShain - 這將是後者。這是我們公司正在製作的一個應用程序,它將附帶我們也在開發的插件。我們只是不想讓竊取變得容易。我的意思是,這可能不是最簡單的事情,但我寧願儘可能地接近「實現真正的痛苦」。 –