C# 查询生成器是否阻止SQL注入?
大家好,我目前正在ASP.NET中使用查询生成器对我在应用程序代码文件夹中创建的一些数据集创建选择、插入、更新查询等。我已经意识到,在查询中使用参数时,您必须使用?像这样C# 查询生成器是否阻止SQL注入?,c#,mysql,asp.net,visual-studio-2010,ms-access,C#,Mysql,Asp.net,Visual Studio 2010,Ms Access,大家好,我目前正在ASP.NET中使用查询生成器对我在应用程序代码文件夹中创建的一些数据集创建选择、插入、更新查询等。我已经意识到,在查询中使用参数时,您必须使用?像这样 SELECT * FROM users WHERE email = ? 我想知道的是,这实际上是为了保护表不受sql注入的影响,还是为了保护查询,您需要在代码中做更多的工作?参数化查询接受参数并将其作为适当的sql数据类型输入。例如,创建这个过程 CREATE PROCEDURE GetStudent (IN LN VARC
SELECT * FROM users WHERE email = ?
我想知道的是,这实际上是为了保护表不受sql注入的影响,还是为了保护查询,您需要在代码中做更多的工作?参数化查询接受参数并将其作为适当的sql数据类型输入。例如,创建这个过程
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'
这是相当安全的
当然,您必须适应特定的应用需求,但总的来说,参数化查询对于所有主要RDM都是安全的,不受SQL注入的影响。你好,尼克,谢谢你的回复,但你的建议似乎不起作用:但我知道我的查询仍然不受SQL注入的影响吗?我像你一样设置查询,如果在创建查询时没有返回任何内容,我会得到一个警告告诉我语法无效