Security 是否看到此方法存在任何安全风险?

Security 是否看到此方法存在任何安全风险?,security,authentication,Security,Authentication,我正在开发一个RESTful(ish)API,它具有以下身份验证样式: 客户端调用“authenticate”API方法并通过HTTPS POST传递用户名和密码。此方法返回基本帐户信息和“客户端令牌”,该令牌存储在数据库中的用户帐户上 所有进一步的API调用(全部通过HTTPS POST)都需要客户端令牌。如果系统无法通过客户端令牌找到请求者,则该调用将被拒绝 我的开放性问题是: 1) 有人认为这有重大的安全问题吗? 2) 我应该让客户机令牌随时间或更改而过期,有什么好的理由吗?现在我给每

我正在开发一个RESTful(ish)API,它具有以下身份验证样式:

  • 客户端调用“authenticate”API方法并通过HTTPS POST传递用户名和密码。此方法返回基本帐户信息和“客户端令牌”,该令牌存储在数据库中的用户帐户上

  • 所有进一步的API调用(全部通过HTTPS POST)都需要客户端令牌。如果系统无法通过客户端令牌找到请求者,则该调用将被拒绝

我的开放性问题是: 1) 有人认为这有重大的安全问题吗? 2) 我应该让客户机令牌随时间或更改而过期,有什么好的理由吗?现在我给每个用户随机分配一个。如果用户注销或忘记密码,我将生成一个新密码


我很想知道每个人对这种方法的想法。我不是要创新,我只是想让我意识到这种方法的风险。

您所描述的功能相当于会话cookie,只在您的应用程序中重新实现,因此受到许多陷阱的影响,这些陷阱可能已经被大多数web框架处理过

  • 确保你的代币有足够的熵。如果令牌是简单的32位整数,那么胡乱猜测可能足以找到其他人正在使用的令牌
  • 如果您随机生成这些令牌,请确保使用加密功能强大的随机数源,否则下一个令牌可能会根据以前的令牌进行猜测
  • 如果这些
    POST
    请求来自脚本和嵌入在网页中的脚本,则将令牌作为显式参数传递,而不是作为声明为
    secure
    httponly
    的cookie传递,使得跨站点脚本更容易窃取令牌

你好,杰弗里-很好的建议。客户端令牌基本上是通过sha1($user_id.time().$secret_salt)生成的,因此不可能随机猜测一个。跨站点脚本是一个值得关注的问题。我得调查一下安全饼干——我从没听说过。我必须调查PhoneGap是否支持cookies。谢谢你的提示@Anthony用户ID和“秘密盐”看起来像什么?后者是固定值吗?作为旁注,如果应用程序比较复杂,或者您最终在不同的域中使用令牌,则使用http头传输令牌与参数具有一定的优势,并且可以缓解一些安全问题(例如,防止将自xss转换为完整xss)。还要注意日志,因为与标头或cookie相比,参数更可能最终出现在日志中