SQL注入详解-7
< DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd>
第三节、经验小结
1. 有些人会过滤Select 、Update 、Delete 这些关键字,但偏偏忘记区分大小写,所以大家可以用selecT 这样尝试一下。
2. 在猜不到字段名时,不妨看看网站上的登录表单,一般为了方便起见,字段名都与表单的输入框取相同的名字。
3. 特别注意:地址栏的+ 号传入程序后解释为空格,%2B 解释为+ 号,%25 解释为% 号,具体可以参考URLEncode 的相关介绍。
4. 用Get 方法注入时,IIS 会记录你所有的提交字符串,对Post 方法做则不记录,所以能用Post 的网址尽量不用Get 。
5. 猜解Access 时只能用Ascii 逐字解码法,SQLServer 也可以用这种方法,只需要两者之间的区别即可,但是如果能用SQLServer 的报错信息把值暴露出来,那效率和准确率会有极大的提高。
防 范 方 法 SQL 注入漏洞可谓是“千里之堤,溃于蚁穴”,这种漏洞在网上极为普遍,通常是由于程序员对注入不了解,或者程序过滤不严格,或者某个参数忘记检查导致。在这里,我给大家一个函数,代替ASP 中的Request 函数,可以对一切的SQL 注入Say NO ,函数如下:
Function SafeRequest(ParaName,ParaType)
传入参数 --- ParaName: 参数名称- 字符型; ParaType: 参数类型- 数字型(1 表示以上参数是数字,0 表示以上参数为字符)
Dim Paravalue Paravalue=Request(ParaName)
If ParaType=1 then If not isNumeric(Paravalue) then Response.write " 参数" & ParaName & " 必须为数字型!" Response.end End if Else Paravalue=replace(Paravalue,"","") End if SafeRequest=Paravalue End function 文章到这里就结束了,不管你是安全人员、技术爱好者还是程序员,我都希望本文能对你有所帮助。
1. 有些人会过滤Select 、Update 、Delete 这些关键字,但偏偏忘记区分大小写,所以大家可以用selecT 这样尝试一下。
2. 在猜不到字段名时,不妨看看网站上的登录表单,一般为了方便起见,字段名都与表单的输入框取相同的名字。
3. 特别注意:地址栏的+ 号传入程序后解释为空格,%2B 解释为+ 号,%25 解释为% 号,具体可以参考URLEncode 的相关介绍。
4. 用Get 方法注入时,IIS 会记录你所有的提交字符串,对Post 方法做则不记录,所以能用Post 的网址尽量不用Get 。
5. 猜解Access 时只能用Ascii 逐字解码法,SQLServer 也可以用这种方法,只需要两者之间的区别即可,但是如果能用SQLServer 的报错信息把值暴露出来,那效率和准确率会有极大的提高。
防 范 方 法 SQL 注入漏洞可谓是“千里之堤,溃于蚁穴”,这种漏洞在网上极为普遍,通常是由于程序员对注入不了解,或者程序过滤不严格,或者某个参数忘记检查导致。在这里,我给大家一个函数,代替ASP 中的Request 函数,可以对一切的SQL 注入Say NO ,函数如下:
Function SafeRequest(ParaName,ParaType)
传入参数 --- ParaName: 参数名称- 字符型; ParaType: 参数类型- 数字型(1 表示以上参数是数字,0 表示以上参数为字符)
Dim Paravalue Paravalue=Request(ParaName)
If ParaType=1 then If not isNumeric(Paravalue) then Response.write " 参数" & ParaName & " 必须为数字型!" Response.end End if Else Paravalue=replace(Paravalue,"","") End if SafeRequest=Paravalue End function 文章到这里就结束了,不管你是安全人员、技术爱好者还是程序员,我都希望本文能对你有所帮助。