代码之家  ›  专栏  ›  技术社区  ›  JL. Hans Passant

对.NET开发人员来说有趣的安全问题

  •  1
  • JL. Hans Passant  · 技术社区  · 15 年前

    所有.NET开发人员都知道在web.config中加密值是可能的。

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

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

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

    所以。如何设置这种加密,以便客户端可以在配置文件中生成新的加密值,例如-sql连接字符串。

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

    有人能改进这个想法吗?

    3 回复  |  直到 15 年前
        1
  •  2
  •   Justin Niessner    15 年前

    我见过的大多数应用程序都是按照你所说的那样使用你所建议的解决方案。

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

    如果您正在讨论一个配置为 不是 存储在web.config中,可以将管理界面构建到应用程序中。这样,你的Web应用程序可以处理加密和配置你的应用程序看起来和感觉就像应用程序本身的一部分(就像它应该)。

    我想这两种方法都能奏效…后者更具挑战性。

    更新

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

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

    如果要允许它们请求现有值,则服务应返回未加密的值。再次,解密是在服务器端完成的,这样您就不会冒着暴露密钥的风险了。

        2
  •  1
  •   Otávio Décio    15 年前

    如果你有一个web应用的管理部分,你可以有生成加密值的代码,不需要winform应用。

        3
  •  1
  •   Josh Weatherly    15 年前

    我们使用自定义dll来处理应用程序中的加密。它实际上可以内置到应用程序本身中,但我们在许多不同的项目中使用它,因此它被移到了自己的dll中。我们只是引用了它然后就走了。

    只要小心,如果你走这条路,如果他们(客户)想这样做,他们可以反汇编dll,并了解你如何执行加密。在我们的例子中,我们可以很好地应对这种风险,因为它们主要是用于访问数据的连接字符串,它们本来应该可以访问这些数据。