0
大家好我目前在ASP.NET中使用查询生成器来创建选择,插入,更新查询等等,我已经在我的App_Code文件夹中创建的一些数据集。我已经意识到你要在查询中使用参数,你必须使用“?”像这样查询生成器是否阻止SQL注入?
SELECT * FROM users WHERE email = ?
什么,我想知道是,这实际上保护你的表从SQL注入或做你需要做更多的代码,以保护查询?
大家好我目前在ASP.NET中使用查询生成器来创建选择,插入,更新查询等等,我已经在我的App_Code文件夹中创建的一些数据集。我已经意识到你要在查询中使用参数,你必须使用“?”像这样查询生成器是否阻止SQL注入?
SELECT * FROM users WHERE email = ?
什么,我想知道是,这实际上保护你的表从SQL注入或做你需要做更多的代码,以保护查询?
参数化查询接受参数并将它们输入为适当的SQL数据类型。因此,例如创建这个PROC
CREATE PROCEDURE GetStudent (IN LN VARCHAR(200))
BEGIN
SELECT Name FROM Students WHERE LastName = LN;
END
,并把该值(假设这是你的C#代码。
"'Bobby'; DROP TABLE STUDENTS;"
基本上将执行这个查询
SELECT Name FROM Students WHERE LastName ='''Bobby;''DROP TABLE Students'
这是相当安全的。
当然,您将不得不适应您的特定应用需求,但一般要点是参数化查询对于所有主要RDMS的SQL注入是安全的。
嗨尼克感谢您的回复,但你的建议似乎并没有工作:(但我的方式,我的查询是仍然可以SQL注入? – 2015-03-31 14:21:43
你可以澄清你的意思是“似乎没有工作“? – 2015-03-31 14:34:53
我设置了查询就像你有,如果不返回任何东西,当我创建它我得到一个警告,告诉我语法无效 – 2015-03-31 14:36:13