【问题标题】:Class with userdata (password & username) - make it secure使用用户数据(密码和用户名)进行分类 - 使其安全
【发布时间】:2010-12-29 20:20:02
【问题描述】:

我有一个类,它从我的应用程序的登录窗口存储用户用户数据(用户 ID 和密码)。目前我正在使用 SecureString 来存储密码,但在某些地方我需要原始密码来验证。 (此时必须是纯文本)

有没有人知道一种将它存储在内存中的安全方法,如果需要,它可以很容易地重新转换为纯文本?

【问题讨论】:

  • 有什么威胁?攻击向量是什么?

标签: c# security


【解决方案1】:

看起来 SecureString 本身并不安全,并且有一些工具可以获取安全字符串。您可以编写自己的代码,加密字符串,分成几部分并存储它,但同样没有安全性,如果您需要使用密码(例如数据库登录等),黑客可以找到并破解您的代码。 安全性不是一个重点,所以代码混淆等很多事情都是齐头并进的。 SmartAssembly 之类的工具可以通过自动加密来保护字符串。 另一种想法是存储散列,而不是密码本身,散列基本上是使用一些随机参数创建的,因此它不能被重新创建,一次密码。

【讨论】:

  • 你说得很好,但是添加到哈希中的盐,存储在哪里?或者,如果那是显而易见的并不重要??
  • 盐像日期一样随机?等等。一旦你通过了服务器的身份验证,创建一些类似 cookie 的机制并将凭据存储在服务器上,比如 IP 地址、用户名、具有自动过期功能的密码。
【解决方案2】:

考虑 CryptProtectData():

http://www.pinvoke.net/default.aspx/crypt32.cryptprotectdata

它可以使用当前用户密钥或本地机器密钥。在 Web 设置(即 ASP.NET)中,您想使用本地计算机。只要您有一个进行加密/解密的 Web 服务器。

【讨论】:

    【解决方案3】:

    您可以通过 MD5 加密密码,比较您可以加密输入的数据并复制两个字符串

    【讨论】:

      猜你喜欢
      • 2018-03-07
      • 1970-01-01
      • 2013-11-07
      • 2011-05-28
      • 1970-01-01
      • 2018-09-29
      • 2013-11-06
      • 2016-02-09
      • 1970-01-01
      相关资源
      最近更新 更多