我正在使用 Microsoft 的 MVC 和所有其他相关技术为 DoD 开展一个项目。出于安全目的,我必须遵循安全技术实现指南 (STIG)。
在version 3, Release 9, section 3.10.1 , 表示
Allow access to the database through views no directly to underlying tables in the database.
和
(APP3540.4: CAT II) The Designer will ensure the application does not directly access the tables in a database.
我可以将 Entity Framework 与 LINQ 一起使用吗?
最佳答案
这是一个直接link到 STIG。这是一个旧版本,但我正在查看最新版本,它们完全相同。我认为文本已经很多年没有改变了,这很不幸,因为它不是很清楚。规则标题说使用参数化语句(我将其视为任何 CRUD 操作),但也不提供对表的直接访问。
Entity Framework 向数据库发送参数化查询,这是一种直接访问的形式。我觉得不安全吗?绝对不。但有人可能会争辩说 STIG 说不要这样做。问题是 STIG 还说使用存储过程代替直接访问,但如果编写不正确,您也很容易遇到 SQL 注入(inject)漏洞。
我的解释?最后,重点是解决 SQL 注入(inject)问题,因此只要您使用参数化查询(即 EF、Dapper、ADO.NET 等)或编写适当的存储过程来缓解这种情况,就应该没问题。
关于c# - Entity Framework with LINQ 是否符合此 STIG?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27256801/