【发布时间】:2026-02-01 23:35:01
【问题描述】:
我是一名刚开始学习网络开发的学生。对于我的任务,我得到了一个网站,我需要确保它能够防止 SQL 注入。我正在尝试使用参数来执行此操作,但是出现错误。
原始代码(如下)可以正常工作:
function logInUser(name,pwd) {
var DBConn = getDBConnection();
var SQL = "SELECT * FROM Users WHERE UserName = '" + name + "' and UserPwd = '" + pwd + "'";
var RS = DBConn.Execute(SQL);
var valid = !RS.Eof;
if (valid) {
Session("UserID") = RS("UserID").value;
Session("UserName") = RS("UserName").value;
Session("UserFullName") = RS("UserFirstName").value + ' ' + RS("UserLastName").value;
}
DBConn.Close;
return valid;
}
我曾尝试以这种方式对其进行修改: 功能登录用户(姓名,密码){ var DBConn = getDBConnection();
var uName = name;
var uPwd = pwd;
var SQL = "SELECT * FROM Users WHERE UserName = @0 and UserPwd = @1";
var RS = DBConn.Execute(SQL,uName,uPwd);
var valid = !RS.Eof;
if (valid) {
Session("UserID") = RS("UserID").value;
Session("UserName") = RS("UserName").value;
Session("UserFullName") = RS("UserFirstName").value + ' ' + RS("UserLastName").value;
}
当我这样做时,我得到:提供程序错误“80020005”类型不匹配。
我也尝试将语句修改为采用一个参数,但随后出现 Engine error '80040e10' No value given for a or more required parameters。
任何帮助将不胜感激,非常感谢!
【问题讨论】:
标签: javascript sql sql-injection query-parameters web-development-server