【发布时间】:2012-07-18 13:47:35
【问题描述】:
这不是关于某些 javascript 细节的特定问题,但我正在寻找验证,即我创建的模型中没有明显的漏洞。我决定推出自己的身份验证例程(除了在后端使用 bcrypt 散列),它将像这样工作:
- 用户(浏览器或 phonegap 创建的本机应用程序)注册 > 使用 jQuery ajax 发布到使用 bcrypt 处理密码并保存密码用户配置文件数据的后端的 Json 对象
- 后端生成并使用客户端 IP 地址保存它返回的令牌(随机哈希,如 /dev/urandom)
- jQuery 插件将令牌存储到本地 cookie 中
- 当发出一些请求(发布、评论等,但不是太频繁)时,它会从 cookie 中获取令牌并将其添加到 json 中,然后使用 ajax 再次发布
- 后端检查令牌是否存在且未过期(有效期为 7 天),检查 ip 地址是否相同,如果正常则验证请求 json 数据并处理请求
- 当令牌过期时,会显示登录屏幕并以 ajax 形式发布凭据,并在步骤 2 中创建新令牌。
ajax 请求的所有内容都通过 ssl 进行,并且没有密码存储在任何地方。如果超过阈值,还有一种机制检查暴力令牌垃圾邮件会暂时阻止源 IP。这不是一个高安全性的应用程序,但希望尊重用户数据并确保它“足够”安全。
我希望这个问题是合格的,即使它并不具体,并且如果它会引发一些讨论,它可以作为其他人的参考。我找不到任何关于这种特定方法的最佳实践教程。
更新:根据收到的反馈更新身份验证机制,因为它对于非关键 Web 应用程序似乎“足够安全”。
【问题讨论】:
-
生成一个随机token,比如
/dev/urandom不要使用md5,它坏了,不是一次性使用token的最佳工具。 -
感谢您的提示,我将研究另一种生成令牌的方法。你能告诉我创建一个随机的阿尔法数字字符串是如何破坏的,因为我没有使用它来散列密码等吗?熵是比替代品差还是别的什么?
标签: javascript jquery ajax security authentication