如何解决存储过程是否比对数据库使用LINQ更安全?
| 我不是安全专家,因此我的项目中讨论了是否应该使用实体框架。即使看起来我们将使用它,项目负责人仍灌输坚持认为出于安全性考虑,我们仍应使用存储过程执行所有操作(包括简单的CRUD)。他说,如果我们使用存储过程,则用户将只需要执行存储过程的权限,而不需要创建/读取/更新/删除的权限。 正如我之前不是安全专家所说的那样,所以我很想知道这是多么真实。解决方法
这样做是为各个存储过程赋予了权限,这些存储过程随后可以访问表,而不是表本身。
这样,您可以限制所有表中的用户,并允许SP允许基于其他逻辑(SP级别的DB权限以及SP内的代码)进行语义访问。
这使总体安全框架在角色和特权方面具有更精细的粒度。
例如,使用普通的数据库权限,可以很容易地限制用户可以看到哪些表,而不是限制用户可以在表中看到哪些行。
解决该问题的两种方法是限制对基础表的访问,然后在该表上创建受限视图并授予对该表的权限,或者您可以通过具有逻辑功能的SP来限制访问,该SP能够限制用户可以看到哪些行。
,这是真的。
与标准表权限相比,存储过程具有执行更好安全性的能力(例如,通过仅更新表的几列即可)
但..
对于开发人员来说,这是一场噩梦。即使最简单的查询也需要实现为存储的proc或view。
所以它不敏捷,快速或性感:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。