2009-01-10 68 views
2

我已經迷迷糊糊的這句話在網上:C#可能不是安全應用程序的最佳選擇?

C#可能是不適合像 這樣的系統級應用的最佳選擇。我相信普通的C++在這裏要好得多,因爲你需要做大量的低級API調用。

我正在尋找有關安全性的程序中進行使用C#,像防火牆,家長控制,防病毒,防間諜軟件等

所以,沒錯,C#可能不是最好選擇安全應用?

[編輯]
我研究一下C#的安全程序,我發現兩個程序:
1)KeePass的(即從C++遷移到C#http://keepass.info/compare.html)令人印象深刻的密碼管理器!
2)主頁再次http://www.codeplex.com/totty530)的數據包嗅探器使用C#造
[/編輯]

+0

「系統級」!=「安全性」。此外,您可以用任何語言編寫不安全的程序。 – Bombe 2009-01-10 02:07:08

回答

9

比如像防火牆常常需要掛接到內核級設施不屬於(平凡)由管理的運行時暴露像.NET一樣。你可以跳過使用C#語言來做這種事情,但是,那麼,你會跳過籃球。

4

如果您正在編寫防火牆或防病毒軟件,則可以使用C++編寫它,因爲它可以訪問C#不適用的內容。雖然C#在編寫應用程序方面比C++更安全,因爲它很難搞定。

4

C#暗示您正在使用.Net框架。這爲您的應用程序添加了很多代碼,您幾乎無法控制。如果在.Net版本中存在安全風險,那麼現在就在您的應用程序中。

對於使用C++的任何其他框架也是如此,但也可以在不使用任何其他框架的情況下編寫C++代碼。

雖然沒有任何方法防範你添加不安全的代碼。

+0

「如果在.Net版本中存在安全風險,它現在在您的應用程序中」--->我相信這是罕見的.net版本,存在安全問題......但存在這種可能性 – 2009-01-10 20:23:54

1

也許你應該看看C++/CLI。它將提供.NET的便利性,同時提供您可能需要使用C++的低級訪問。

5

那麼,如果你在安全工作,你可能需要一把槍。 C++是比C#更好的槍支,但要小心 - 用C++拍攝自己的腳容易得多。

2

同意。許多您想要調用的函數都是您必須從C#中進行P/Invoke調用的函數。從OS到你的C#程序的回調也不是很好,像System.Runtime.InteropServices.CallingConvention。

現在,對於像前面提到的密碼管理器這樣的東西,這可能並不重要。這真的只是一個奇特的數據庫,具有智能導入/導出/存儲/轉換功能。不過,如果他們可以與其他程序進行交互,這將會非常有用。你只是不能在隨機進程中注入C#DLL。

1

.Net應用程序開箱即可完全翻轉可讀代碼。(試一試:http://www.reflector.net/)只有代碼中的註釋丟失了! ;)如果人們在你的應用程序的引擎下能夠輕鬆地看,那麼它很重要。 C/C++會讓你更安全,因爲逆向工程有點困難。但是用於C/C++應用程序的.Net混淆器或包裝器可以使您的應用程序的反向工程變得更加困難。因此,這絕不是不可能的。但是應該是潔具。某些.Net混淆器不能很好地處理代碼中的SOAP WSDL服務,只會混淆代碼而導致錯誤!

相關問題