asp.net获取url参数,asp中获取安全的参数

asp中获取安全的参数 - 网络安全 - 电脑教程网

asp中获取安全的参数

日期:2006-10-27   荐:
网站的sql注入已经成为非常普遍的漏洞,令无数站长头疼不已。

究其原因,主要是对客户端传送参数的随意性导致的,因此只要有效保证了传入参数,就可以避免注入攻击。

在这里我简单的讲传入参数分为两种:数字型和字符串型。

字符串型:目前的解决办法来看,就是过滤单引号了。过滤单引号之后的字串要进行注入,至少我还没想到什么有效的办法。

数字型:过滤引号是不够的!还必须确定是数字型!因为sql可以执行转换为16进制数值的查询语句,所以只要将注入语句转换为16进制字符串附加在参数当中,就可以逃避对引号的判断。

因此综合上面的分析,只要判断了参数类型,然后针对字符串参数加以过滤就可以简单的避免sql注入了。


但是在写程序过程中,尤其是vbscript这样的弱类型语言,难免有疏漏的时候,所以我写了下面这个函数,如果所有的传入参数都经过这个函数进入,作为程序得一个小的"防火墙"就可以很有效的避免上面所说的攻击了。

'=========================================================
' Function getRequest(byval str,byval stype) str为传入的参数名称,stype为限定的类型(int、str),requestType为查询的类型(form、querystring、servervariables)。
' get the request str with type
'=========================================================


public Function getRequest(byval str,byval stype,byval requestType)
dim requestStr
if requestType="form" then
requestStr = request.form(str)
else if requestType = "querystring" then
requestStr = request.querystring(str)
else if requestType = "servervariables" then
requestStr = request.ServerVariables(str)
else
response.write("错误的查询类型")
response.end
Exit Function
end if
If Isnull(requestStr) Then
getRequest = ""
Exit Function
End If
if stype="int" then
if IsNumeric(requestStr) then
getRequest = requestStr
Exit Function
else
response.write("参数类型错误")
response.end
Exit Function
end if
end if
requestStr = Replace(requestStr,Chr(0),"")
requestStr = Replace(requestStr,"'","''")
getRequest = requestStr
End Function


注:在下水平有限,不当之处请各位指教。

(出处:http://www.sheup.com)




标签: