加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp-classic – 如何在经典的asp中制作一个预防sql注入的预处理

发布时间:2020-12-16 00:01:02 所属栏目:asp.Net 来源:网络整理
导读:我有这个有效: sqlString = "SELECT * FROM employees WHERE lastname = '" last_name "'"Set cmd = Server.CreateObject("ADODB.Command")Set cmd.ActiveConnection = dbConncmd.CommandText = sqlStringcmd.Prepared = TrueSet 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的动态部分之上是在准备好的语句命令之前.我不认为我上面的东西在保护我.

在执行预准备语句之前,我不必修复此sqlString吗?读这篇文章让我觉得:How can prepared statements protect from SQL injection attacks?:

“虽然在准备好的声明中,我们不会改变我们的计划,但它仍然完好无损
这才是重点.

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

$db->prepare("SELECT * FROM users where id=?");

其中数据被称为“占位符”的变量替换
然后我们分别发送数据:

$db->execute($data);

所以,它不能改变我们的计划并造成任何伤害.
很简单 – 不是吗?“

但我不知道如何使我的查询正确.我也不知道他是如何准备$data的.希望得到指导.谢谢.

解决方法

为什么不使用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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读