.net开发人员有趣的安全问题

时间:2009-09-29 16:30:49

标签: .net security

由于所有.net开发人员都知道可以在web.config中加密值。

我有其他XML配置文件,我从序列化技术中读取,不是使用system.configuration而是序列化为强类型对象。

现在要求我加密这些xml文件中的某些值,而不是整个XML文件,只需加密文件中的一些字符串值。

所有这些都是非常标准的东西,除了这个应用程序将在客户端内部运行,客户端应该能够直接更改配置。

因此。如何以客户端可以在配置文件中生成新加密值的方式设置此加密,例如 - SQL连接字符串。

到目前为止,我能想到的最好的方法是发送一个可以加密值的自定义win表单应用程序,以便我的应用程序能够以标准化的方式知道如何处理这些值。

任何人都可以改进这个想法吗?

3 个答案:

答案 0 :(得分:2)

我见过的大多数应用程序与您所说的完全相同,都采用了您建议的相同解决方案。

有一个单独的工具来管理应用程序的配置。它是笨重的,但这就是完成工作所需要的。

如果您正在讨论配置存储在web.config中的Web应用程序,则可以在应用程序中构建管理界面。这样,您的网络应用程序就可以处理加密并配置您的应用程序外观,感觉就像应用程序本身的一部分(就像它应该的那样)。

我认为其中任何一个都可行......后者只是更具挑战性。

<强>更新

刚刚看到您正在谈论的是一个Web服务应用的评论。在这种情况下,您可以公开专门用于配置服务应用程序的服务(很难实现)。或者您可以创建一个允许管理员配置服务的小型Web应用程序(更容易实现)。最后的努力将是WinForms应用程序(最简单)。

只要您的服务以非加密格式获取字段,然后在存储它们之前对服务器端进行加密......您就不必担心暴露任何密钥。

如果您要允许他们请求现有值,您的服务应返回未加密的值。再次,解密是在服务器端完成的,因此您不会冒险暴露您的密钥。

答案 1 :(得分:1)

如果您有自己的网络应用的管理部分,那么您可以拥有在那里生成加密值的代码,而不需要winform应用。

答案 2 :(得分:1)

我们使用自定义DLL来处理我们的应用程序中的加密。它实际上可以内置到应用程序本身,但我们在许多不同的项目中使用它,因此它已被移出到它自己的DLL。我们只提供一个参考,然后我们去。

请注意,如果你走这条路,如果他们(客户)想做,他们可以反汇编dll并了解你如何执行加密。在我们的情况下,我们对此风险很好,因为它们主要是用于访问他们通常应该访问的数据的连接字符串。