如何不对密码进行硬编码?

时间:2009-02-17 01:13:06

标签: security password-protection password-storage

在我的上一个问题“用于存储机密的可移植数据库”the best answer until now告诉使用sqlite-crypt。

阅读sqlite-crypt文档,打开数据库的新参数是密码短语。当然,我不想硬编码密码,所以我在想什么是存储密码的最佳,简单和快速的方法?

4 个答案:

答案 0 :(得分:11)

一些选项。

  1. 向用户询问密码(也就是说他们记住一个密码以获取所有密码)(好主意)

  2. 在应用的第一次启动时创建一个密钥,然后以您自己独特的方式进行哈希处理(坏主意)

  3. 使用上述的混合物,即为用户提供一个或两个选项(记住我的密码复选框)

答案 1 :(得分:3)

您很好 将其存储在用户中。

否则你只是用其他一些安全机制替换你要问的那个......


David's point in the comment on Infamy's answer很好。一个人应该允许一些灵活性,以防用户在较低层处理保护......所以,去投票给Infamy。

答案 2 :(得分:2)

除非密码仅以交互方式使用,否则硬编码在某些时候是不可避免的。

你可以在文件密码的情况下做的最好的事情就是让它首先难以访问它,然后限制如果有人找到它可以用它做什么。根据经验,您不应该为存储在字符串中的密码赋予比在必须提示时键入的密码更多的权限。

答案 3 :(得分:2)

在Windows上,您可以/应该使用提供存储加密的DPAPI Data Protection API 这就是针对这类问题的。

存储加密基于:

  • 用户帐户,因此只有登录用户才能访问数据。这使得数据可以使用完全相同的用户凭据转移到另一台PC。
  • 机器,使数据只能在特定的机器设置上访问,不能转移到另一台PC。

有一个dnrTV show with Karl Franklin显示了实现此功能所需的确切内容以及其他加密功能 该节目的源代码也可以在页面上找到。

当然,在这个主题上有很多other articles