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)
您的存储过程正在使用绑定变量,并且没有根据您传入的参数构建SQL语句,因此您不需要清理参数以避免SQL注入.
在其他情况下,您可能希望出于其他原因对其进行清理(例如,如果"name"是显示的内容,并且您希望避免攻击,其中有人在一个小Javascript程序中键入一个然后显示回来的字段).通常情况下,在实际呈现字段的代码中会考虑到这一点,但确保您不在数据库中存储流氓Javascript是一个很好的备份.