我正在创建一个网络应用程序,将使用OpenID登录和OAuth令牌与Youtube。我目前在数据库中以纯文本形式存储OpenID身份和OAuth令牌/令牌秘密。
将这些值存储为纯文本是否不合适?我可以对OpenID标识符使用单向加密,但我不知道是否有必要这样做。对于OAuth令牌,我需要使用双向加密,因为我的应用程序在某些用途上依赖于获取会话令牌。
是否需要对OpenID身份进行加密?是否有人可以使用它来访问用户的帐户?
发布于 2009-12-29 08:13:32
首先,有一个已注册的应用程序,它包含consumer_key
和consumer_secret
。
当用户验证并“允许”您已注册的应用程序时,您将得到回报:一个被视为用户“密码”的access_token
,它将只允许您的应用程序代表用户执行操作。
因此,如果用户没有用于完全访问的consumer_key
和consumer_secret
,那么从数据库中只获取用户的access_token
就没有多大帮助。
服务提供商根据请求比较所有4个参数。在存储之前加密这4个参数,并在响应之前解密它们,这将是明智的。
这正是当您需要代表用户更新或更改用户的资源所有者时。要使用户在您的站点上保持登录状态,请使用会话。
发布于 2009-12-12 02:01:02
显然,OAuth令牌和密码都应该安全地保存在您的数据库中,但您不能像存储密码那样使用单向加密来存储它们。原因是您需要令牌和密码才能对请求进行签名。
如果您运行的是OAuth服务器,也会出现这种情况,您仍然需要原始令牌/密码来验证请求。
如果您愿意,您仍然可以使用双向加密算法对它们进行加密,以提供安全性,以防您的数据库或数据库备份受到威胁。
发布于 2009-12-10 20:27:16
OpenID地址不应该被加密,因为这是你的“开放id”,每个人都应该知道它的值。此外,URL需要是数据库中的索引,并且加密数据库中的索引总是有问题的。
OAuth令牌/密码应该是保密的,如果您必须长期存储令牌,加密可能会提高安全性。在我们的OAuth消费者应用程序中,令牌/秘密只在会话中存储一小段时间,并且我们选择不对它们进行加密。我认为这已经足够安全了。如果有人可以偷看我们的会话存储,他们可能也有我们的加密密钥。
https://stackoverflow.com/questions/1878830
复制相似问题