使用ajax时传递身份验证的最佳方法

时间:2009-08-13 21:00:32

标签: ajax security json

我正在开发一个只通过ajax拉取数据的页面: http://itprojectguide.org/projectmatrix/itprojectguideprojectmatrix.html

页面当前提取状态json数据文件。

要进行身份验证,我将添加一个初步登录(用户名/密码),我正在考虑执行以下操作以确保存在有效的登录用户:

  1. 登录时,发送用户ID,md5密码 - 服务器将返回包含用户ID,登录日期,级别的加密字符串
  2. 我会将此加密字符串传递给所有页面,每个页面都会将字符串和页面类型发送到服务器 - 将验证加密字符串以确保有效用户以及用户在过去24小时内已登录(基于在日期)。数据将根据用户的级别和用户所在的页面+任何页面特定数据(例如日期范围或公司ID,取决于日期)返回
  3. 使用加密的用户ID,登录日期,级别是否可以确保正确的安全性?我不打算使用cookies ...有更好的方法吗?

    这项工作的一部分是使用仅ajax / json交互来检索每个页面的数据,而不是在服务器上呈现它。

2 个答案:

答案 0 :(得分:3)

由于您要滚动自己的会话管理逻辑,因此需要确保以下内容:

  • 验证后服务器返回的字符串是不可猜测的。您可能正在加密它以防止篡改,但您还必须考虑重放和劫持攻击。为此,大多数会话ID都是使用PRNG生成的。
  • 字符串在传输过程中受到保护。这取决于您(或更确切地说是您的客户)为应用程序中的数据分配的值。如果可以从线上窥探字符串导致严重的业务损失,您应该查看HTTPS。
  • 会话最终应该过期。会话活动的时间越长,最终被发现的可能性就越大。

答案 1 :(得分:1)

您可以考虑使用一次性密码:

http://en.wikipedia.org/wiki/One-time_password

此外,如果您无法通过https运行,您可能会依赖各种OpenID提供商的HTTPS,至少在初次登录时获取会话cookie。