经典的asp请求输入单引号

时间:2012-09-25 19:28:16

标签: asp-classic vbscript

我正在尝试读取文本区域(id = Message)并将其保存到数据库中。问题是,如果用户在文本中输入单引号('),则下面的代码都无法处理。

Request("Message")

Replace(Request("Message"),"'","")

都失败并显示错误消息

Security violation occurred
Incorrect value was passed for field "Message"

似乎只要看到Request("Message")

就会失败

2 个答案:

答案 0 :(得分:0)

您应该使用Command对象将userentered数据安全地保存到数据库中。

set cmd = Server.CreateObject("ADODB.Command")
set cmd.ActiveConnection = conn
cmd.CommandText = "INSERT INTO table(message) VALUES(?)"
cmd.CommandType = 1
recordsAffected = 0
call cmd.Execute(recordsAffected, array(Request("Message")&""))

if recordsAffected <> 1 then
  Response.Write "Something went wrong!"
else
  Response.Write "Data saved!"
end if

上面的代码假设您与存储在变量conn中的数据库有一个开放的连接。

答案 1 :(得分:0)

我怀疑这可能是托管级安全措施,以防止SQL注入。如果是这种情况,唯一的解决方案可能是要求您的主机禁用它(并自行保护)或在提交表单时添加一些JavaScript来替换或HTML编码撇号。

您是在本地计算机上测试还是在网络托管公司托管的网站上进行测试?