我的一个控制器操作是强制性的POST到/Edit来编辑记录(例如联系人)。现在问题来了:如果有人伪造一个简单的POST到/Edit(它会自动绑定到我的联系人类),并编辑其他人的信息怎么办?由于每个记录都是通过Id标识的,所以唯一需要做的就是用Id XXX创建一个虚假的POST,然后记录#XXX将被覆盖为攻击者提供的任何内容。我该如何阻止这种情况发生?
我想到的唯一方法是每次从数据库中先获取原始实例,检查它是否确实在用户可编辑对象的范围内(他通常会看到要编辑的对象),只有在检查通过后才进行UpdateModel和提交更新更改。
有更好的方法吗?
编辑:这不是跨站点/ CSRF攻击。另一个已登录的用户可以这样做。