liujiangmc 发表于 2008-5-13 00:07

Replace(Command1__m_id, "'", "''") 的问题

if(Request("newsID") <> "") then
Command1__m_id = Request("newsID")
set Command1 = Server.CreateObject("ADODB.Command")
Command1.ActiveConnection = MM_news_STRING
Command1.CommandText = "DELETE FROM news  WHERE n_ID in(" + Replace(Command1__m_id, "'", "''") + ") "
Command1.CommandType = 1
Command1.CommandTimeout = 0
Command1.Prepared = true
Command1.Execute()
response.Redirect("news_list.asp")
else
response.write ("<script>alert('您没有选择任何记录!');history.go(-1);</script>")
end if
上段代码中,Replace(Command1__m_id, "'", "''") 这句单引号从何而来,Command1__m_id只是数字啊,没单引号啊?为什么要改成''

xxzdm 发表于 2008-5-14 13:18

汗..DW可视化开发ASP..建议楼主不要用..那玩意开发出来的..不行..[tk02]

lele2007 发表于 2008-5-14 14:05

可能是怕别人用'or'='or'非法登录吧!把获取的  '(单引号)替代成''
估计是这机关报吧!

yms123 发表于 2008-5-14 16:23

Response.Write Request("newsID")
显示一下这个新闻编号就知道是为什么了。

liujiangmc 发表于 2008-5-16 22:32

[quote][bo]以下是引用 [un]yms123[/un] 在 2008-5-14 16:23 的发言:[/bo]

Response.Write Request("newsID")
显示一下这个新闻编号就知道是为什么了。 [/quote]
按版主说的做了,出现的结果只是光秃秃的数字,其它什么都没有,没有单引号什么的啊,也许是我没明白版主的意思,请版主说详细点哦,谢谢

ilovey4 发表于 2008-5-17 01:26

他是把单引号给过滤掉
以后用户再提交带有单引号的字符时,Replace()会将单引号过滤为空。如此一来,提交的特殊字符也就失去了意义。
防止别人进行网站注入的时候用到的[tk11]

[[it] 本帖最后由 ilovey4 于 2008-5-17 01:27 编辑 [/it]]

页: [1]

编程论坛