我是否需要将参数清理为SQL存储过程?

Chr*_*ell 1 sql parameters stored-procedures sql-injection

我正在写一个ASP(经典)Javascript的快速网站.

我正在使用带参数的预准备语句.没什么特别的.

我的问题是我是否需要清理参数的输入(如果是这样,是否有像PHP这样的本机函数?),或者我使用参数而不是连接内联SQL这一事实让我安全吗?

//Set up the command to run the GetMigrationDate stored procedure.
var command = new ActiveXObject("ADODB.Command");
command.CommandText = "exec myStoredProc ?";

//Set up parameters
command.Parameters.Append(command.CreateParameter("name", 200, 1, 255));
command.Parameters("name") = name;

//Set up result recordset
var results = new ActiveXObject("ADODB.Recordset");

//Run command
results.open(command);
Run Code Online (Sandbox Code Playgroud)

[编辑]存储过程是这样的:

@name varchar(255)

select * from customers where name = @name
Run Code Online (Sandbox Code Playgroud)

Jus*_*ave 7

您的存储过程正在使用绑定变量,并且没有根据您传入的参数构建SQL语句,因此您不需要清理参数以避免SQL注入.

在其他情况下,您可能希望出于其他原因对其进行清理(例如,如果"name"是显示的内容,并且您希望避免攻击,其中有人在一个小Javascript程序中键入一个然后显示回来的字段).通常情况下,在实际呈现字段的代码中会考虑到这一点,但确保您不在数据库中存储流氓Javascript是一个很好的备份.