RESTful PUT和黑客入侵URI

时间:2013-02-07 16:22:14

标签: security rest put

我正在学习RESTful接口。要更新服务器资源,例如对于具有(id = 1)的联系人,我会将其设为:

PUT /contact/1

现在假设当前用户属于拥有联系人1的组织1。还有组织2,具有联系人2.当前用户不属于组织2并且没有权限。如果用户攻击网页(使用Firebug for Mozilla或MSE的“F12调试器”)并将网页请求更改为指向/ contact / 2,则浏览器将快乐地提交请求。

我的服务器必须防止此类跨组织攻击。在我目前的网站设计中,一旦用户登录,我就在会话中存储了一个数据对象(我正在使用Tomcat / Java)。该对象存储用户所属的组织。安全检查代码将传回的PUT请求的组织与用户所属的组织进行比较,并查看传回的数据是否属于用户的组织。在检测到黑客攻击时(组织1的用户试图修改属于组织2的联系人2),将向浏览器返回错误。

我知道REST应该是无状态的,但我现在正在使用某种状态。然而,如果我将用户信息传递到网页中,我认为这也可以通过Firebug等来攻击。

如何在不调用服务器状态的情况下实现此安全性?

谢谢, 杰罗姆。

1 个答案:

答案 0 :(得分:0)

RESTful服务通常是无状态的。 这意味着每个请求都必须使用apikey或其他方式进行身份验证。

因此请求将为/path?apikey=MYKEY,服务器将处理该apikey的权限。

顺便说一句,我也尝试了有状态的休息服务,服务器能够通过在登录期间初始化的cookie来理解会话(但这并不是真正的REST)。

如果你想用curl尝试它们,请执行以下操作:

curl -c cookie.txt -d "user=username&password=pass" "my.login.path"
curl -b cookie.txt "do.something"