我正在写一个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);
[编辑] 存储过程是这样的:
@name varchar(255)
select * from customers where name = @name
答案 0 :(得分:7)
您的存储过程正在使用绑定变量,并且没有根据您传入的参数构建SQL语句,因此您无需清理参数以避免SQL注入。
在其他情况下,您可能希望出于其他原因对其进行清理(例如,如果“name”是显示的内容,并且您希望避免攻击,其中有人在小型Javascript程序中键入一个然后显示的字段背部)。通常情况下,在实际呈现字段的代码中会考虑这一点,但确保您不在数据库中存储恶意Javascript是一个很好的备份。
答案 1 :(得分:0)
在构建Sql语句时主要是在从用户(外部)提供参数时进行清理。