1

我正在使用 ASP javascript 使用用户传递的参数从 MySQL 数据库中进行选择。我想使用准备好的语句来做到这一点。我在 VB 脚本中看到了示例,但在 ASP JS 中无法弄清楚。我通常会通过以下方式进行操作:

var adoConnection = Server.CreateObject("ADODB.Connection");
adoConnection.Open("dsn=my-dsn;uid=userid;pwd=password;");


var getAdmin = "SELECT * FROM users WHERE username = '"+String(Request.QueryString("username"))+"'";
var rsAdmin = adoConnection.Execute(getAdmin);

我想改变这个以更安全的方式传递用户数据,有人可以帮忙吗?

4

3 回答 3

2

要在 ASP 中正确参数化您的查询,您需要使用“ ADODB.Command ”来执行您的查询,而不是直接使用ADODB.ConnectionADODB.Command具有名为“ .CreateParameter() ”的方法,可以满足您的要求。

示例代码

'-------------------------------------------------------------------'
var oCmd = Server.CreateObject("ADODB.Command")
var sSQL = "SELECT username, action FROM userlog WHERE event_date < ? ;";
oCmd.CommandText = sSQL
oCmd.ActiveConnection= oConn
'-------------------------------------------------------------------'
var oPar = oCmd.CreateParameter("event_date",7,1,,dDate); 'Date
oCmd.Parameters.Append(oPar);
'-------------------------------------------------------------------'

.... 执行此操作,直到您附加了所有参数并且 ....

var oRS = oCmd.Execute();

并且您可以根据需要操作记录集

其他资源

ADODB 文档

MSDN 示例

于 2013-04-30T13:48:48.500 回答
0

ASP javascript 通常被称为 JScript。如果您在 stackoverflow 上搜索“[jscript] [mysql]”,它会向您显示一个问题,该问题可能会回答您的问题:

使用参数化 SQL 查询执行 ADODB 命令失败

您还可以在 Google 上搜索“msdn jscript ado”以获取更多示例。

于 2013-04-30T11:52:25.940 回答
0

虽然直接从浏览器端代码调用数据库并不是将数据检索到页面中的首选方法(现在大多数人更喜欢 AJAX/JSON 请求......),但您绝对可以通过转换代码来提高代码的安全性对存储过程调用的 SQL 语句。

有关详细信息,请参阅http://andrewu.co.uk/clj/stored_procedures_with_jscript/

于 2013-04-30T13:47:09.290 回答