我想建立以下项目:
事实上,我的架构中有三方:前端,后端的客户端,后端和想要在前端登录页面上进行身份验证的用户。
确保参与此架构的三方的最佳方法是什么?
事实上,我认为如果我用javascript做所有事情,在前端做一个安全的应用是不可能的,所以我打算将认证/授权委托给我服务器前端的代理层。你怎么看待这个?
我打算使用OAuth来保护我的REST后端,但我不确定是否必须使用2或3脚的实现。在这种情况下,正确的方法是什么?
更新:在SO网站上深入搜索时,我发现这个thread正是我想要做的,除了我想在服务器端使用Java而不是DOTNET的。如果我理解得很好,事实上我的网站就像我的REST API的任何客户端,除了它是唯一有权创建新用户帐户的网站。因为,如果我的REST API只能由OAuth访问(如Twitter的那个),谁可以在之前执行用户帐户创建?我是对的吗?
答案 0 :(得分:4)
此架构的安全性的一个主要问题是测试。自动化工具在测试此系统时会遇到SQL注入Direct Object Reference等常见漏洞的问题。用于测试奇怪架构的有用工具是OWASP的开源Zed Attack Proxy或专有的BURP代理。测试将非常耗时,并且需要对Web应用程序漏洞有深入了解的人员。我们经常将这些人称为 Pentesters 。
保持会话状态的RESTful形式是使用HMAC来保护值不被修改。然而,这是对密码学的滥用,因为它为攻击打开了大门。攻击者可以强制使用HMAC中使用的密钥,然后修改其会话ID等值,或以其他方式访问系统上的其他帐户。只有在没有其他选项时才应使用加密。通过将会话状态存储在非RESTful的数据库中,可以完全防止此漏洞。