0

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

Request("Message")

或者

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

两者都失败并显示错误消息

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

.

好像一读就失败Request("Message")

4

2 回答 2

0

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

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

于 2012-09-26T11:52:45.727 回答
0

您应该使用命令对象将用户输入的数据安全地保存到数据库中。

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 中的数据库建立了一个开放的连接。

于 2012-09-25T19:40:17.087 回答