检测 Entity SQL 命令文本

Detect Entity SQL command text

提问人:stuartm9999 提问时间:6/6/2018 更新时间:6/6/2018 访问量:56

问:

尽管标准和培训告诉我们的开发人员不要使用“实体 SQL 命令文本”,因为它会使代码容易受到 SQL 注入攻击(https://learn.microsoft.com/en-us/dotnet/framework/data/adonet/ef/security-considerations#security-considerations-for-queries),但最好使用某种机制(例如解析器)来确认这一点。 有谁知道是否可以在开发过程中检测到任何实体 SQL 命令或测试,作为对 SQL 注入的深度防御的一部分?

.NET 实体框架 安全性 SQL 注入

评论

0赞 Panagiotis Kanavos 6/6/2018
如果你使用 eSQL,你不会有任何问题。如果使用参数化 eSQL,则不会有问题。你不需要一个解析器。您可能需要代码审查,特别是如果您关心纵深防御。如果代码的其余部分易受攻击,或者映射到连接查询字符串本身的存储过程,则分析器根本无济于事
0赞 Panagiotis Kanavos 6/6/2018
事实上,如果你发现人们求助于实体 SQL,你应该问为什么?很多时候,这是设计问题的迹象。不是因为指南说不要这样做,而是因为它适用于特殊情况。模型错了吗?他们是否试图做一些不适合 ORM 的事情,比如报告?为什么是 eSQL 而不是映射到视图或存储过程?
0赞 stuartm9999 6/7/2018
同意上述内容。但是,对于80 +开发人员来说,有一个自动化步骤也会很好。
0赞 Panagiotis Kanavos 6/7/2018
这就是所谓的“代码审查”。你不能使用工具为你做这件事,尤其是当你有大团队时。您可以使用工具使其更轻松、更友好。您可以使用 Resharper、Visual Studio 中的代码分析器或 SonarCube 等工具来检查代码,但最终您必须正确设计它。eSQL 和 Dapper 一样不错,参数化查询也不错。
0赞 Panagiotis Kanavos 6/7/2018
在最简单的情况下,不要使用 Entity SQL。不要使用 EntityCommand 对象或方法。您只需在所有代码中搜索 或 即可找到任何实例SqlQueryEntityCommandSqlQuery(

答: 暂无答案