首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这是RESTful身份验证的安全解决方案吗?

这是RESTful身份验证的安全解决方案吗?
EN

Software Engineering用户
提问于 2013-10-28 18:20:21
回答 2查看 1.2K关注 0票数 1

我需要快速实现一个RESTful身份验证系统,以便我的JavaScript应用程序使用。我想我知道该怎么做了,但我只想再查一遍。我是这么想的--你们怎么看?

数据库模式

用户

  • id :整数
  • first_name : varchar(50)
  • last_name : varchar(50)
  • 密码: varchar(32) (MD5散列)
  • 等。

user_authentications

  • id :整数
  • user_id :整数
  • auth_token : varchar(32) (AES加密,数据库外的密钥)
  • access_token : varchar(32) (AES加密,数据库外的密钥)
  • 活动:布尔

步骤

以下情况发生在SSL上。我正在使用Sinatra作为API。

  1. JavaScript通过POST向/users/auth/token请求身份验证。
  2. /user/auth/token方法生成一个auth_token哈希,在user_authentications中创建一个记录,并返回auth_token。
  3. JavaScript对用户的密码进行散列,然后使用auth_token -- SHA(access_token +MD5(密码))对其进行盐分。
  4. 将用户的用户名和hashed+salted密码发布到/user/auth/authenticate。
  5. 用户/auth/authenticate方法将验证通过POST接收到的SHA(AES.decrypt(access_token) + user.password) ==。
  6. 如果验证成功,/user/auth/authenticate将生成、AES加密、存储和返回访问令牌;否则,它将返回401未经授权的访问令牌。
  7. 对于对API的任何未来请求,JavaScript将包括access_token,并且API将基于此查找用户帐户。
EN

回答 2

Software Engineering用户

发布于 2014-10-18 21:40:52

不,不安全,这似乎是不必要的复杂。

特别是:

  • 没有理由在数据库级别加密令牌。如果攻击者能够获得密码哈希(可以访问DB),他可以获得全新的令牌。
  • 没有描述会话到期。

这可以帮助: OWASP REST安全备忘单认证备忘单

票数 3
EN

Software Engineering用户

发布于 2014-09-18 14:35:42

正如Donal Fellow所说,这只是在浪费时间。如果你没有一个安全的通道,你应该得到一个,而不是重新发明车轮。如果您已经有了一个安全的通道,那么您就不需要另一个(劣等的)加密机制.

票数 -1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/215782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档