2010-08-27 71 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