Bla*_*ine 15 javascript rest backbone.js
我有这个REST服务器(由我自己编写),它由简单的HTTP身份验证保护.
现在我使用backbone.js重新编写应用程序,我不确定如何验证我的客户端.如果我在JS用户/传递中这样做将是可见的.
那么我应该如何修改我的服务器或我的客户端JS是安全的?
以前我只是给了用户并通过PHP传递给REST服务器的每个请求,请指导我,谢谢.
PhD*_*PhD 29
HTTP基本身份验证容易被窃听和中间人攻击.建议使用HTTPS.
但是,如果这不是一个选项,您可以始终将cookie发送回客户端并在其中输入用户名/密码以防止它显示在JS文件中.不言而喻,出于安全原因,密码至少应加密/散列.然后,onus将在服务器端从cookie获取身份验证详细信息.
现在,如果您对修改服务器端代码没有任何控制权,那么除了在全局ajaxSend()方法中隐藏凭证详细信息之外,您几乎没有任何选择,该方法将在每个AJAX请求中发送用户名/密码详细信息.您可以将其放在其他.js文件中并使其难以找到,但您几乎只限于这种安全形式.虽然,饼干不会让你的生活更安全.(如果密码经过哈希/加密,那就太好了).
你可以做的另一件事就是有一个稍微复杂的安全形式:让服务器在每次响应时发回一个nonce - 服务器使用服务器的密钥对nonce进行"签名",你可以使用它来'加密'每个请求在客户端的用户名/密码.然后,您的服务器必须不断解密凭据.这不太容易中间人,但仍然不是万无一失.
如果它是您的选项,HTTPS将为您节省上述每一项.
希望这可以帮助.
更新 (根据评论):restful-ness的本质是服务器上缺少状态.即,没有会议!因此,您需要使用客户端对服务器的每个请求发送用户凭据.如果你有一个登录页面,那么很难真正做到安宁,因为没有名为登录的"资源".但是,这是你可以做的:
每个请求必须在没有服务器维持会话的情况下识别自己 - 这就是无国籍的精神(和宁静;)
好吧,我和同事进行了讨论,并提出了迄今为止最好的想法:
在您的客户端(站点)中创建一个简单的控制器并将其命名为 RESTAPI,它将仅充当实际 REST 服务器的包装器。
当用户登录您的站点时,就会创建他的会话。RESTAPI 控制器知道您的 HTTP Authed 实际 REST 服务器的凭据,并代表骨干网访问 REST 服务器。
示例:如果我必须获取
/消息/已发送
来自 REST 服务器,现在我将在主干集合中点击此 url
站点/restapi/消息/已发送
RESTAPI 控制器还首先检查请求用户在站点上是否有正确的会话以及是否允许他获取资源。
因此,不用担心不安全的 cookie 或让 REST 服务器以纯 JS 传递或使用任何其他晦涩的方法:)
| 归档时间: |
|
| 查看次数: |
11729 次 |
| 最近记录: |