Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp classic 如何在经典asp中生成防止sql注入的准备语句?_Asp Classic_Sql Injection - Fatal编程技术网

Asp classic 如何在经典asp中生成防止sql注入的准备语句?

Asp classic 如何在经典asp中生成防止sql注入的准备语句?,asp-classic,sql-injection,Asp Classic,Sql Injection,我有一个有效的方法: sqlString = "SELECT * FROM employees WHERE lastname = '" & last_name & "'" Set cmd = Server.CreateObject("ADODB.Command") Set cmd.ActiveConnection = dbConn cmd.CommandText = sqlString cmd.Prepared = True Set recs = cmd.Execute 我遇到

我有一个有效的方法:

sqlString = "SELECT * FROM employees WHERE lastname = '" & last_name & "'"
Set cmd = Server.CreateObject("ADODB.Command")
Set cmd.ActiveConnection = dbConn
cmd.CommandText = sqlString
cmd.Prepared = True
Set recs = cmd.Execute
我遇到的问题是,
sqlString
的动态部分在prepared语句命令之前。我不认为我上面所说的是在保护我

在执行准备好的语句之前,我不需要修复这个sqlString吗?读了这篇文章,我想:

“对于准备好的声明,我们不会改变我们的程序,但它保持不变 这就是重点

我们首先将程序发送到服务器

 $db->prepare("SELECT * FROM users where id=?");
其中数据被称为“占位符”的变量替换 然后我们分别发送数据:

 $db->execute($data);
所以,它不能改变我们的程序,也不会造成任何伤害。 很简单,不是吗?”


但我不知道如何使我的疑问正确。我也不知道他是如何从
prepare
$data
的。他希望得到指导。谢谢。

这里有一个关于如何使用经典asp防止sql注入的好博客


为什么不使用ADO命令参数

var oCmd = Server.CreateObject("ADODB.Command");
oCmd.CommandText = "SELECT * FROM employees WHERE lastname = ?";
oCmd.Parameters.Append(oCmd.CreateParameter(undefined,202, 1, 50,"last name"))//adVarWChar

最简单的方法是在SQL中使用存储过程,并以这种方式使用命令。。否则,您必须转义从请求对象收集的某些字符,如单引号和双连字符等。

我将尝试。谢谢未定义的内容,202,1,50,?oCmd.CreateParameter([name]、[type]、[direction]、[size]、[value])这将是一个很好的链接好教程的地方。另请参见VBS示例。