簡體   English   中英

不使用OO封裝會帶來安全風險嗎?

[英]Does not use OO Encapsulation creates Security Risks?

這個問題聽起來有些愚蠢,但是我有好奇心要知道,如果暴露出像公共場所這樣的物體的領域,是否會給我的應用造成安全隱患或漏洞,並可以被其他人利用?

public class AClass
{
    public int AProperty { get; set; }

    //Less Secure?
    public int APublicField;
}

謝謝

訪問修飾符(公共,私有,受保護)只是一種機制,允許具有源訪問權限的訪問者進行不同級別的封裝。 您應該將它們與OOP最佳實踐一起使用,以使邏輯易於維護。 它們與您的應用程序的安全性完全無關。

在C#中,您可以使用RTTI像公開一樣輕松地反映私有數據。 由於C#的CLR和二進制兼容性保證,您甚至可以在自己內部的外部二進制文件上執行此操作。 即使您不能使用反射,攻擊者也可以使用反匯編程序並將代碼作為中間語言進行檢查。 您可能需要閱讀這篇文章

熟悉該平台的精明攻擊者甚至可能會找到有關如何對運行諸如softICE之類的內核級調試器的應用程序進行反向工程的線索。

您總是可以通過封裝邏輯來試圖使執行變得不那么明顯,從而通過模糊來使用某種形式的安全性 ,但是很明顯,如果有人足夠持久,他們就會找到方法。

最好的安全性選擇是進行研究,並尋找商業和開放源代碼的良好使用的庫。 密碼學的曝光率越高,圖書館開發人員和白帽子就可以協作修復發現的漏洞。

代碼段中的兩個“字段”本質上是等效的。 第一個只是自動屬性 因此,任何一個都不比另一個“安全”。

實際上,設置者和獲取者只是OOP的歷史最佳實踐。

公開的兩個解決方案均不遵循封裝,因為更改屬性的名稱或類型時,必須在使用該屬性的所有類中都對其進行更改。

但是,public屬性的一個優點是您可以獲得更少的代碼,這有助於輕松理解和維護代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM