2010-08-27 73 views
1

有沒有什麼方法使用C#來監視特定文件,然後在它被特定應用程序讀取之前更改它的內容?用於讀取和更改數據的監視文件?

這裏的情況是:

我有包含LDAP信息的配置文件(XML)的Windows 2003 Server上運行ASP.NET。我想要加密LDAP密碼。我試圖設計一種方法來監視該文件,並且只要讀取它,解密LDAP密碼並將其傳遞給正在閱讀的任何文件。有什麼方法可以告訴哪個程序正在讀取?我已經有加密/解密工作,但它是內置到ASP.NET安裝;我想讓它成爲外部的。加密/解密是使用密鑰存儲區中的密鑰的RSA。

+1

你爲什麼要加密一些你想在每次讀取時自動解密的東西?這裏有一個訣竅,不要對它進行加密,只是告訴人們它已經加密並且每次嘗試查看時都會自動解密。 – 2010-08-27 14:31:10

+0

@Jimmy,這是允許特定應用程序進入的地方。 – 2010-08-27 15:00:03

回答

1

我認爲這將通過對文件使用NTFS權限更好地完成。只授予某些用戶/組訪問權限,並確保任何需要訪問受保護數據的進程都在具有正確ACL權限的用戶的安全上下文中運行。

+0

如果我沒有記錯,這是一個好主意ASP.NET(使用IIS 6)在網絡服務下運行。任何人都可以證實嗎? – 2010-08-27 14:59:07

+0

ASP.NET工作進程可以在您設置的任何帳戶下運行,我認爲這是默認情況下的網絡服務。通常,您希望設置安全性,以便您不必擔心即時解密數據。如果你打算爲任何請求者解密它,它可能不會被加密。 – 2010-08-27 15:03:46

2

如果你想在你的主應用程序外部加密/解密,那麼創建一個獨立的.dll或web服務是如何實現的。然後,您在ASP.NET應用程序中的呼叫將發送到您的webserice或.dll。

喜歡的東西(Warining:不Compiled-你需要清理它)

WebServiceInstance instance = new WebServiceInstance(); 
string password = instance.PerformGetPassword(); 

那麼,你的ASP.NET服務是不知道的加密密碼都沒有。此外,如果您有其他需要訪問相同文件的應用程序,則可以調用相同的Web服務。

+0

+1 Webservice是創建對此類文件的解密訪問的正確方法,但它不能解決他將* all * reads(如當記事本嘗試讀取它)被饋送解密版本的文件,如果這實際上是一個要求.. – 2010-08-27 14:33:05

+0

@Jimmy Hoffa - 如果_everything_讀取它需要解密,這是行不通的。但是,如果_everything_讀取它需要解密,爲什麼首先加密?設置讀取權限,以便只有授權用戶/組才能讀取文件。 – AllenG 2010-08-27 14:44:38

+0

問題是我沒有訪問/無法更改我想用於此的所有Web應用程序的源代碼。否則這將是我會走的路。 – 2010-08-27 14:55:41