海外邮件中继,海外退信中继,美国高速VPS,不限流量VPN,邮局维护和管理,邮件网关,EMOS邮件中继,POSTFIX邮件中继,Winwebmail邮件中继,Winmail邮件中继,DBMail邮件中继,JDMail邮件中继,Exchange邮件中继,MDaemon邮件中继 淘宝店:http://shantan.taobao.com 云邮科技官网:www.yunrelay.com
【字体设置:大 中 小】
防SQL注入代码应用恰当的话,可以达到事半功倍的效果,但是,如果你把代码放到了不合适的位置或不经过合适的设置,不仅达不到防注入的效果, 还有可能连自己发表文章,修改文章都受到限制.
兄弟最近就进行了测试,发现如果把代码包含到连接数据库的文件中,那么当我发布或修改某些含有代码的程序的时候,就会提示错误,说我在SQL注入,呵呵,这样防注把自己也拒绝了.
如果把它放到程序的最末端,比如程序最后的版权部分,又达不到防注入的效果,虽然会提示错误, 但是是程序执行完了以后才提示SQL注入的,那样就没有用了.有没有两全其美的方法呢?答案是可以肯定的,下面就教大家如何利用防注入代码:
首先,基本的程序都是管理员登陆以后才可以发布和修改内容的,或者登陆后台的,那么,我们就来个验证,如果,管理员登陆了程序,就不进行防注入程序,否则就进行检测.
下面是应用的实例,大家可以参考一下,采用类似的写法即可:
<%
If memName="" or memName<>"admin" then
'在这里用IF语句进行检测,如果用户名为空(即没有登陆)或不为"admin"(即不是管理员)就启用SQL防注入程序,建议大家采用SESSION检测用户是否登陆再进行验证,这样的效果会准确一点.
Response.Buffer = True '缓存页面
If Request.QueryString <> "" Then StopInjection(Request.QueryString)
'防GET方式
If Request.Form <> "" Then StopInjection(Request.Form)
'防POST方式
If Request.Cookies <> "" Then StopInjection(Request.Cookies)
'防COOKIES
'采用正则表达式函数
Function StopInjection(Values)
Dim regEx
Set regEx = New RegExp
regEx.IgnoreCase = True
regEx.Global = True
regEx.Pattern = "'|;|#|([\s\b+()]+(select|update|insert|delete|declare|@|exec|dbcc|alter|drop|create|backup|if|else|end|and|or|add|set|open|close|use|begin|retun|as|go|exists)[\s\b+]*)"
Dim sItem, sValue
For Each sItem In Values
sValue = Values(sItem)
If regEx.Test(sValue) Then
Response.redirect"errorsql.asp"
Response.End
End If
Next
Set regEx = Nothing
End function
'最后面要加上End if语句很上面的IF对应,否则会出错的!
End if
%>
好了,完整的防注入程序就搞好了!
发表评论 - 不要忘了输入验证码哦!