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

标签 c# asp.net asp.net-mvc security aop

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

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

我想到了几种方法:

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

我在之前的项目中都在数据访问层(在查询中)做过安全,但总是搞得一团糟。我想知道其他人都在做什么,以及您正在使用哪些框架来帮助您(AOP 框架。)

最佳答案

我总是采用您的第 2 和/或第 3 种方法 - 在 UI 和逻辑处理程序之间的某个位置的显式安全层。

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

关于c# - 在 ASP.NET MVC 应用程序中处理记录/实体级别的安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8247975/

相关文章:

c# - Asp.net 核心返回 View 或 Json/XML 的最干净的方法

c# - 简单发布到 Web Api

asp.net - IIS 中的远程过程调用失败 Excel

asp.net HttpContext.Current.Request.ServerVariables 不工作

c# - Log4net 不记录异常

c# - 正则表达式查找字符串中所有出现的模式

c# - 如何直接从 Amazon s3 存储提供非公开文件

ajax - MVC Razor Ajax 从按钮点击调用

asp.net-mvc - ASP.NET MVC 的模型设计建议

json - 在 HttpConfiguration 实例中的 ASP.NET Web API 应用程序中处理 json pretty-print 参数