处理ASP.NET MVC应用程序中的记录/实体级安全性

Sig*_*ray 15 c# asp.net security asp.net-mvc aop

每个人都在做什么来处理ASP.NET MVC应用程序中单个记录的安全性(检索和修改)?此应用程序具有与Web用户界面完全独立的服务/业务层和数据访问层.我已经在使用成员资格和角色提供程序来处理我的应用程序中特定区域/功能的身份验证和授权,但现在我需要保护个人记录.

例如,假设Bob可以创建和编辑自己的FooBar记录.我想确保其他用户无法查看或编辑Bob的记录.我想防止URL操作和/或编程错误.我们可能还希望允许Bob与其他用户共享他的FooBars,允许他们查看但不能编辑他的记录.

我提出了几种方法:

  • 在数据访问层中进行安全性检查,直接在检索和修改查询中进行.
  • 在继续使用业务逻辑之前,请检查服务层中的安全性,执行额外的安全性查询.
  • 创建UI和服务层之间存在的安全层.UI将通过安全层发出所有请求.
  • 使用面向方面编程(AOP).创建安全性方面并使用安全属性修饰服务层方法.

我在之前的项目中已经在数据访问层(在查询中)中完成了安全性,并且它总是变得一团糟.我想知道其他人在做什么,以及你用什么框架来帮助你(AOP框架.)

Wik*_*hla 2

我总是采用第二种和/或第三种方法 - 在 UI 和逻辑处理程序之间的显式安全层。

AOP 听起来像是一种完全失去对代码控制的方法,而 DAL 中的安全性听起来像是一种错误的方法,因为它混合了不同的职责。