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

2022-09-03 08:07:57

我想构建以下项目:

  • 公共 REST API 后端,可由任何经过身份验证的客户端访问
  • 前端在 HTML/CSS/Javascript 中使用带有 Backbone 的静态文件.js jQuery 对 REST 后端的调用

实际上,在我的体系结构中有三个方面:前端,它是后端的客户端,后端和想要在前端登录页面上进行身份验证的用户。

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

事实上,我相信如果我在javascript中完成所有操作,就不可能在前端做一个安全的应用程序,所以我打算将身份验证/授权委托给我的服务器前端的代理层。对此,你怎么看?

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

更新 :在SO网站上搜索更多内容时,我发现了这个线程,这正是我想做的,除了我想在服务器端使用Java而不是DotNet。如果我理解得很好,事实上我的网站就像我的REST API的任何客户端一样,除了它是唯一有权创建新用户帐户的客户端。因为,如果我的REST API只能通过OAuth访问(就像Twitter的一样),那么谁可以执行用户帐户的创建?我说的对吗?


答案 1

此体系结构安全性的一个主要问题是测试。自动化工具在测试此系统时会遇到 SQL 注入、直接对象引用等常见漏洞时遇到的麻烦。测试奇怪架构的有用工具是OWASP的开源Zed攻击代理或专有的BURP代理。测试将非常耗时,并且需要对Web应用程序漏洞有很好的了解。我们经常把这些人称为渗透测试者

保留会话状态的 RESTful 形式是使用 HMAC 来保护值不被修改。但是,这是对密码学的滥用,因为它为攻击打开了大门。攻击者可以暴力破解 HMAC 中使用的密钥,然后修改值(如他的会话 ID)或以其他方式访问系统上的其他帐户。仅当没有其他选择时才应使用加密技术。通过将会话状态存储在数据库中来完全防止此漏洞,该数据库不是RESTful。


答案 2