2

我有一个服务器应用程序,它为我编写的客户端提供了一个 Restful API。到目前为止,这就是我正在做的事情:

1)。提供允许客户端输入用户/密码(通过 SSL)的登录 REST URL

2)。在服务器上对用户进行身份验证,并返回一个 sha1 加密令牌(此时用户已在服务器上登录)。令牌类似于 sha1(user.email + 日期时间等)。

3)。客户端使用令牌发出请求

4)。对于要在服务器上处理的请求,从标头或 URL 中读取令牌,然后与登录的用户 sha1(user.email + 日期时间等)进行比较。

5)。如果匹配,则返回资源,否则返回 401 未登录。

6)。客户端完成后,他们可以注销并摆脱其本地令牌副本。

请告诉我这是否足够,或者如果您认为我在做一些愚蠢的事情,请告诉我,以便我改进它。

谢谢你

4

2 回答 2

1

是的,这太可怕了。您正在制作自己的会话 ID,而且它非常不安全。会话 id 必须始终是随机值,使用session_start(). 当然它并不平静,但它比你正在构建的会话 ID 安全得多。如果您的应用程序存在 sql 注入漏洞,我可以提取为另一个用户构建会话 id 所需的数据。这是非常不安全的。

此外,您可能从未听说过OWASP a9。事实上,你应该阅读整个 owasp top 10。

于 2012-05-21T02:18:11.470 回答
0

既然用户可以在第一次通话中发送他们的凭据,为什么还要使用 sha1 令牌方法呢?让他们每次只发送相同的凭据,这样您就无需“登录”以及这种方法所需的所有会话管理。

于 2012-05-20T17:52:37.663 回答