首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确使用ORM防止SQL注入?

如何正确使用ORM防止SQL注入?
EN

Security用户
提问于 2015-01-27 00:10:01
回答 2查看 3.1K关注 0票数 -1

我读过这里,使用ORM (如nHibernate)并不一定会阻止SQL注入;例如,如果您继续使用ORM框架创建动态查询,则仍然容易受到攻击。

好吧,那么如何正确地使用ORM来避免所有类型的SQL注入呢?我们应该使用ORM框架使用参数化查询吗?像nHibernate这样的代码会转义特殊的SQL字符,比如单引号,这样开发人员就不会编写如下代码:

private string SafeSqlLiteral(string inputSQL) { return inputSQL.Replace("'", "''"); }

EN

回答 2

Security用户

发布于 2015-01-27 05:30:09

好吧,那么如何正确地使用ORM来避免所有类型的SQL注入呢?

你没有。

未创建ORM以防止SQL注入。如果您想防止SQL注入--要对SQL注入的工作方式有一个明确的理解,并将这些知识应用到您编写的代码中。这样--您将知道防止它的正确方法(包括在涉及使用动态SQL的情况下)。

我还没有研究过NHibernate的源代码,所以我无法告诉您它们是如何阻止SQL注入的(如果您真的关心,我建议您自己进行一些挖掘)。如果我不得不打赌-我会说他们使用参数化SQL,因为这是防止SQL注入的行业标准。

要防止动态SQL中的sql注入,需要使用参数化查询,特别是服务提供商_执行者

票数 2
EN

Security用户

发布于 2015-01-27 02:04:46

它并不总是阻止SQL注入,典型的例子包括脚本中的第二次ordre注入,甚至存储过程使用从表中读取的数据而不对它们进行参数化或验证数据。

票数 0
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/80131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档