2011-08-14 40 views
1

我试图把一个相当快速的mash-up放在一起,我认为这对人们很有用,而且我想利用Twitter通信。这是我第一次使用OAuth,我选择了Twitterizer库来完成工作。Twitter OAuth令牌存储没有用户数据库?

我的问题来自于我不打算存储用户信息或让用户创建帐户(它意味着更多的是快速实用程序)。鉴于此,一旦我获得用户的OAuth访问令牌和秘密,我必须找出一种安全的方式来存储它们(可能是本地的),而不会影响OAuth的安全原则。

这里是我至今想:

  • 用户经历的过程,直到我有自己的访问密钥和秘密
  • 我在Cookie加密值和存储检索后

然而,有几个问题/顾虑:

  • 什么(如果有的话),防止有人通过cookie模仿用户?
  • 在同一浏览器中处理潜在多个用户的正确方法是什么?我最初的想法是在我的应用程序上的一个“注销”按钮,它会杀死cookie,但我不确定。

在此先感谢您的帮助!

+0

如何计划检索您散列的访问密钥和秘密值?你的意思是加密它们并将它们加密存储在cookie中? – userx

+0

是的,正确的 - 谢谢!我会澄清。 – SeanKilleen

+0

尽管您已经提供了大量的上下文很好,但人们应该明白,您提出的问题非常广泛:我如何最好地将敏感信息存储在cookie中?这是个好主意吗? –

回答

0

我不太了解OAuth,因为我不使用它,但在一个浏览器上处理多个用户的一种方法是使用某种计时器功能。每次用户连接到您的页面时,cookie都会有一个“有效期”的时间戳,例如现在为+30分钟。如果有效期到了,应用程序会要求用户重新进行身份验证。

您甚至可以通过在页面卸载上设置非常短的时间戳然后在页面加载上设置更长的时间来完成此操作。这意味着,如果用户在您的应用中从一个页面转到另一个页面,他们将会有很长的超时时间,但是如果他们离开您的应用,下一个用户可以在一分钟内使用同一浏览器,而无需以前的用户登录。

更安全的方式可能是使用会话。例如,您可以设置一个包含会话ID的cookie,然后在会话中设置“有效期”值。

但请注意,这些方法绝对不是傻瓜式的,因为可以操作cookies,更改时间戳和会话劫持。

+0

嗨路宝 - 感谢您的回应!不过,我认为目标是避免用户每次使用时都不得不重新授权我的应用程序以发送推文,因为这已成为非标准行为(因为大多数站点授权一次并存储在用户数据库)。我认为计时器对我所做的事情可能是过度的,但我会更详细地检查会话选项,因为这会更好地用于公共场合。也许重新授权一次会话不会那么糟糕.. – SeanKilleen

0

我觉得总的来说,饼干不应该依赖于敏感信息,但是,安全始终是一种平衡行为。最终,你试图掩盖你不安全地存储的信息。

除了加密令牌之外,还可以包含校验和。我会保存在一个单独的cookie中。只需要您的网站可以使用它来验证敏感数据的完整性,以确保它不会被篡改。它可能是单向加密散列或类似的东西。

您也可以在cookie上指定到期日期。也许保持它几天或几周。

我会再说一遍,通常将敏感信息存储在cookie中是一个坏主意。