我不是安全专家,我的项目中讨论过是否应该使用实体框架。即使看起来我们会使用它,项目负责人仍然坚持要求我们仍然应该通过存储过程进行所有操作(包括简单的CRUD),因为安全性。他说,如果我们使用存储过程,用户只需要执行存储过程的权限,而不需要创建/读取/更新/删除权限。
正如我之前所说,我不是安全专家,所以我很想知道这是多么真实。
答案 0 :(得分:2)
这样做是为各个商店程序提供权利和特权,然后这些程序可以访问表,而不是表本身。
这样,您可以限制所有表中的用户,并允许SP基于其他逻辑(SP级别的数据库权限以及SP中的代码)允许语义访问。
这使得整体安全框架在角色和特权方面具有更精细的粒度。
例如,使用普通数据库权限,很容易限制用户可以看到的表,但不能限制他们在表中可以看到的行。
修复此问题的两种方法是限制对基础表的访问,然后在该表上创建受限视图并授予该权限,或者您可以通过SP限制访问,该SP具有能够限制用户行的逻辑可以看到。
答案 1 :(得分:1)
这是真的。
存储过程提供了比标准表权限执行更好安全性的能力(例如,通过提供仅更新表的几列的可能性)
但是...
对于开发者而言,这是一场噩梦。即使是最简单的查询也需要实现为存储过程或视图。 所以它不敏捷,快速或性感:)