问题描述
|
我正在编写一个开源客户端软件,可以代表用户连接到Web服务。用户输入他的用户名和密码,然后软件使用这些凭据进行连接。
为了方便起见,我为该软件提供了一个选项来保存用户的凭据,以便将来无需再次输入。
但是,由于这是开源的,因此我不确定如何以合理的安全方式存储凭据。令我惊讶的是,我用来加密密码的任何方法都可以轻易地颠倒并用于解密密码。我意识到不可能实现完美的安全性,但是有没有比我目前正在使用ROT13更好的做法?
解决方法
Pidgin开发人员在开放源代码客户端中对保存的密码进行了很好的处理。同样的理由也适用于Web服务客户端。
执行摘要:
如果应用程序本身保存密码,则将其保留为纯文本格式,并将文件权限设置为仅用户可读。 (这很明显表明设置文件是敏感的!)
提供与平台密钥环API(例如Windows Data Protection API)或密钥环应用程序(例如KeePass)集成的选项。