保护javascript前端/REST后端体系结构网站的最佳方法?

保护javascript前端/REST后端体系结构网站的最佳方法?,java,javascript,security,rest,architecture,Java,Javascript,Security,Rest,Architecture,我想建立以下项目: 公共REST API后端,可由任何经过身份验证的客户端访问 前端带有HTML/CSS/Javascript格式的静态文件,后端调用Backbone.js jQuery 事实上,在我的体系结构中有三个方面:前端(后端的客户端)、后端和希望在前端登录页面上进行身份验证的用户 保护此体系结构中涉及的三方的最佳方式是什么 事实上,我相信如果我用javascript做所有事情,就不可能在前端做一个安全的应用程序,因此我打算将身份验证/授权委托给服务器前端的代理层。你觉得怎么样 我打

我想建立以下项目:

  • 公共REST API后端,可由任何经过身份验证的客户端访问
  • 前端带有HTML/CSS/Javascript格式的静态文件,后端调用Backbone.js jQuery
事实上,在我的体系结构中有三个方面:前端(后端的客户端)、后端和希望在前端登录页面上进行身份验证的用户

保护此体系结构中涉及的三方的最佳方式是什么

事实上,我相信如果我用javascript做所有事情,就不可能在前端做一个安全的应用程序,因此我打算将身份验证/授权委托给服务器前端的代理层。你觉得怎么样

我打算使用OAuth来保护我的REST后端,但我不确定是否必须使用2条腿或3条腿的实现。在这种情况下,什么是正确的方法


更新:在搜索deep more on SO网站时,我发现这正是我想要做的,只是我想在服务器端使用Java,而不是DotNet。如果我能很好地理解的话,事实上我的网站就像我的RESTAPI的任何客户端一样,只是它是唯一有权创建新用户帐户的客户端。因为,如果我的restapi只能由OAuth访问(就像Twitter的那样),那么之前谁可以执行用户帐户创建呢?我说的对吗?

此体系结构的安全性的一个主要问题是测试。自动化工具在测试该系统是否存在SQL注入等常见漏洞时会遇到问题。测试奇怪架构的一个有用工具是OWASP的开源或专有的BURP代理。测试将非常耗时,并且需要对web应用程序漏洞有充分了解的人。我们经常把这些人称为戊酯


保持会话状态的一种RESTful形式是使用保护值不被修改。然而,这是对加密技术的滥用,因为它为攻击打开了大门。攻击者可以强制使用HMAC中使用的密钥,然后修改其会话id等值,或者以其他方式访问系统上的其他帐户。只有在没有其他选项时才应使用加密。通过将会话状态存储在非RESTful的数据库中,完全可以防止此漏洞。

您可以正确地认为,在js中执行的任何身份验证/授权都是毫无价值的,因为用户可以关闭或伪造它。@rico仅供参考,您可能可以在获取更多答案。@Thomas,它和客户端表单验证一样毫无价值。事实上,我的问题是我不知道如何通过简单的用户名/密码(或openid)进行身份验证,以及如何在客户端执行授权(使用OAuth?)。感谢您的测试目的,但我的问题更倾向于如何在我的web站点客户端上对用户进行身份验证,以及如何在我的背部进行授权end@rico那为什么会改变呢?这与使用普通的旧get/post的html应用程序有何不同?只需在后端使用一个会话。浏览器跟踪cookie。在会话数据中,您可以跟踪其会话id,并将其包含在所有sql查询中,以防止不安全的直接对象引用。就像HTML一样,您仍然需要担心CSRF、sql注入、xss等…您所说的后端会话是什么意思?这是一个REST后端,所以我想你指的是一些将扮演会话角色的东西,你指的是一个令牌吗?我不确定是否理解。您希望在后端数据库中存储什么?你认为谷歌、推特等使用的OAuth不安全吗?您如何看待亚马逊的its认证规则?谢谢你,鲁克。我自己也遇到了直接对象引用的问题。似乎没有正确的答案。使用一些HMAC可能是野蛮的强迫。否则会话信息会破坏REST。还有其他选择吗?