小编Bin*_*ash的帖子

在服务器上保护Breeze以防止恶意更新外键

问题

我只想弄清楚在Breeze中保存更改时我需要在服务器端实现多少安全性.特别是,我正在考虑恶意用户如何手动破解SaveChanges请求或破解客户端中的javascript,以绕过我的正常业务规则 - 例如,恶意更改我的实体上的外键ID.

我想准确理解我需要关注安全工作的重点; 我不想浪费时间实现不需要的安全层.

我在服务器端使用Breeze和.net以及Entity Framework.

这是一个简单的例子.ObjectA有一个参考ObjectB,ObjectA并由一个特定的所有User.所以,我的数据库看起来像这样:

ObjectA:

Id    ObjectB_Id    SomeField          User_Id
1     1             Alice's ObjectA    1
2     2             Bob's ObjectA      2

ObjectB:

Id    SomeOtherField
1     Foo
2     Bar

User:

Id    Name
1     Alice
2     Bob
Run Code Online (Sandbox Code Playgroud)

从这个模型,我的安全问题是:

  1. 我不希望未经身份验证的用户更改任何数据
  2. 我不希望鲍勃能够对爱丽丝做任何改变 ObjectA
  3. 我不想让爱丽丝试着把她指向ObjectA鲍勃的ObjectB.
  4. 我不希望鲍勃试图改变User_Id他的ObjectA爱丽丝.

(1)的解决方案是微不足道的; 我将确保我的SaveChanges方法具有[Authorize]属性.

我可以轻松地使用Fiddler构建一个SaveChanges请求来重现问题2到4 - 例如,我可以构建一个请求,它将AliceObjectA 更改为指向Bob的ObjectB.这就是消息内容的样子:

"entities":
[
    {
        "Id":1,
        "ObjectB_Id":2,
        "SomeField":"Alice's ObjectA", …
Run Code Online (Sandbox Code Playgroud)

breeze

9
推荐指数
1
解决办法
616
查看次数

标签 统计

breeze ×1