当前位置:  开发笔记 > 编程语言 > 正文

通过Backbone.js安全访问经过身份验证的REST服务器?

如何解决《通过Backbone.js安全访问经过身份验证的REST服务器?》经验,为你挑选了1个好方法。

我有这个REST服务器(由我自己编写),它由简单的HTTP身份验证保护.

现在我使用backbone.js重新编写应用程序,我不确定如何验证我的客户端.如果我在JS用户/传递中这样做将是可见的.

那么我应该如何修改我的服务器或我的客户端JS是安全的?

以前我只是给了用户并通过PHP传递给REST服务器的每个请求,请指导我,谢谢.



1> PhD..:

HTTP基本身份验证容易被窃听和中间人攻击.建议使用HTTPS.

但是,如果这不是一个选项,您可以始终将cookie发送回客户端并在其中输入用户名/密码以防止它显示在JS文件中.不言而喻,出于安全原因,密码至少应加密/散列.然后,onus将在服务器端从cookie获取身份验证详细信息.

现在,如果您对修改服务器端代码没有任何控制权,那么除了在全局ajaxSend()方法中隐藏凭证详细信息之外,您几乎没有任何选择,该方法将在每个AJAX请求中发送用户名/密码详细信息.您可以将其放在其他.js文件中并使其难以找到,但您几乎只限于这种安全形式.虽然,饼干不会让你的生活更安全.(如果密码经过哈希/加密,那就太好了).

你可以做的另一件事就是有一个稍微复杂的安全形式:让服务器在每次响应时发回一个nonce - 服务器使用服务器的密钥对nonce进行"签名",你可以使用它来'加密'每个请求在客户端的用户名/密码.然后,您的服务器必须不断解密凭据.这不太容易中间人,但仍然不是万无一失.

如果它是您的选项,HTTPS将为您节省上述每一项.

希望这可以帮助.

更新 (根据评论):restful-ness的本质是服务器上缺少状态.即,没有会议!因此,您需要使用客户端对服务器的每个请求发送用户凭据.如果你有一个登录页面,那么很难真正做到安宁,因为没有名为登录的"资源".但是,这是你可以做的:

    用户访问登录页面,输入凭据并点击"登录"

    使用这些凭据向服务器发送POST请求 - 可能是/ Login

    让服务器返回需要身份验证的请求资源,并使用有效凭据设置cookie以在"下一个"请求中使用

    每个后续请求都将通过特定操作(GET,PUT,POST,DELETE ...)定向到特定URL的相应​​资源.服务器应检查来自cookie的身份验证数据,并确定用户是否已通过身份验证,并在必要时执行进一步授权以授予访问权限.

每个请求必须在没有服务器维持会话的情况下识别自己 - 这就是无国籍的精神(和宁静;)

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有