使用AJAX进行基本认证

时间:2011-12-24 04:29:30

标签: jquery ajax basic-authentication

  

可能重复:
  How to use Basic Auth and Jquery and Ajax

我想通过AJAX将基本身份验证用于REST服务。身份验证标头不是我的问题。我的问题是如何存储和检索将在基本身份验证中使用的凭据。

我是否应该在首次登录时将用户名和密码存储在Cookie中?我希望用户能够登录该网站。一旦他们登录,他们的Web浏览器将通过AJAX下载页面内容,并使用包含其数据的REST服务进行基本身份验证。

我认为必须有一些标准的方法来做到这一点。但我很难弄清楚它是什么。

谢谢!

1 个答案:

答案 0 :(得分:2)

在我弄清楚究竟是在问什么之后,我把这个问题标记为一个骗局。

以下是关于你如何推出自己的Auth系统的答案,这最初是我认为你的问题所在:)


如果您的网站在互联网上可见,则仅使用HTTP Basic Auth不会保护您的内容。

将用户名和密码发送到服务器

您不应将用户名和密码存储在数据库内的任何位置。密码绝不应以纯文本格式存储。它应为hashed,使用a Salt

进行身份验证时,使用相同的Salt散列密码,并验证生成的哈希值是否相同。

您还可以考虑密码的预哈希(除了服务器端哈希),因此纯文本密码永远不会通过网络发送。

会话cookie而不是每个请求的用户名/密码

仅使用用户名和密码进行一次身份验证,并将会话cookie返回给用户。

此cookie应用于查找哪个用户拥有会话,以及何时进行身份验证(因此会话可能会过期)。如果他们有一个符合未到期会话的有效cookie,您可以考虑对他们进行身份验证。

安全问题

此计划的其余问题是它仍然倾向于a replay attacka man-in-the-middle attack

您可以通过仅允许经过身份验证的会话通过SSL访问您的网站来缓解部分问题。

可以帮助的另一件事(虽然不能完全解决问题)是在会话数据中存储auth请求来自的IP,并确保每个请求都是相同的IP。 / p>

如果可以,我建议您重复使用现有的身份验证系统,而不是自己动手。这有点复杂(并且容易出问题),其他人已经仔细考虑过了。我确信我也缺少一些细节。