防注入中的这句代码是什么作用?

来源:百度知道 编辑:UC知道 时间:2024/06/24 14:29:29
Function SafeRequest(ParaName,ParaType)
Dim ParaValue
ParaValue=Request(ParaName)
If ParaType=1 then
If not isNumeric(ParaValue) then
Response.write "<center>参数" & ParaName & "必须为数字型,请正确操作!</center>"
Response.end
End if
Else
ParaValue=replace(ParaValue,"'","''")
End if
SafeRequest=ParaValue
End function

这里面的SafeRequest=ParaValue,把paraname里的'替换成'' ?有什么作用的?

'是一个单引号
''是两个单引号,而不是双引号,这个需要你看清楚点.
意思是要把一个单引号替换成两个单引号,防止用户破坏数据库的查询.

比如sql=select * from table where id='"&abc&"'
abc 是你的变量
如果正常情况下,是没有引号或者引号成双,是不会出错,比如abc=111
那么此时sql=select * from table where id='111'
程序正常
反之,如果用户非法传入了一个单引号abc=11'1
sql=select * from table where id='11'1'
此时引号没有成对,程序就会出错,这时就会在浏览器中出现错误信息,黑客可以通过这些错误信息一步步的获取你数据库中的重要资料,比如保存在数据库中的网站管理员的口令等.是危险的.
变成双引号后程序就不会出错,就避免了上述的情况..

明白?