2009-11-15 66 views
3

我知道存储这样敏感的数据是一个坏主意。但是,如果应用程序每次启动时都会询问密码,那么它会很烦人......我知道OAuth,但这同样是一回事 - 用户会被浏览器中断(或者我错了吗? - 这一刻不清楚为了我)。我知道对称密码术。但如何安全地在应用程序内存储密钥?在twitter客户端存储登录/密码

问题很简单。 (但有两部分:-)

1)是否可以发送登录名/密码对而不是纯文本?

2)如果不是,为什么我应该考虑一下安全性(在我的应用程序)?

如果您发现了一个拼写错误随时告诉我这件事

回答

3

的密码时,发送到Twitter,因为它使用HTTP基本身份验证和Twitter不 使用 需要 SSL为他们的API是不加密的。像所有基本身份验证一样,用户名和密码都是BASE64编码的,但几乎没有任何安全性。

你应该安全地存储它的原因是,你的应用程序不应该负责泄漏一堆用户的密码,如果出现问题。

我强烈建议您考虑使用OAuth。这有很多原因,但并不要求你的用户使用他们的twitter凭据来信任你。您可以像存储用户名和密码一样存储访问令牌和令牌密码,以便用户不必每次都登录,并且不必担心对广泛的安全漏洞负责。缺点是使用起来比基本更难一些,但并非如此。

+0

这是否意味着OAuth令牌具有很长的使用寿命,我可以将其存储以备后用?即使从产生的那一周起(或一个月或一年),令牌也会有效? – 2009-11-16 20:14:36

+1

一旦用户完成了授权应用程序的授权过程,OAuth令牌永远是理想的,除非用户撤销它(或者twitter会撤销您的应用程序的Consumer密钥)。 – 2009-11-16 20:20:01

7

如果打算成为一个只有Windows .NET应用程序,你应该看看Data Protection API(DPAPI)。它将特定的安全实现委托给Windows,而Windows则使用用户的Windows配置文件/凭证将数据保存到磁盘。既然这是真实的,经过彻底的审查并且经常受到攻击,那么您可以无忧无虑地存储信息,并专注于对您而言重要的应用程序部分。

这很容易通过ProtectedData类使用DPAPI在.NET:

ProtectedData.Protect(data, entropy, DataProtectionScope.CurrentUser); 

如果你是好奇的精确执行标的证券,这是discussed at length here

+0

对呀!但是在与Twitter的沟通过程中密码会被加密吗?我的问题是“如果没有,我需要在我身边使用任何安全工具?” – 2009-11-16 10:26:37