当前位置:高校自动化网 >> sql >> 浏览文章

简单的SQL防注入系统

文章来源:本站原创 作者:佚名


该文章讲述了简单的SQL防注入系统.

简单的SQL防注入系统

dim sql_injdata SQL_injdata="'|and|exec|insert|select|delete|update|count|*|hr|mid|master|truncate|char|declare"SQL_inj=split(SQL_Injdata,"|")If Request.QueryString""Then For Each SQL_Get In Request.QueryString For SQL_Data=0 To Ubound(SQL_inj)if instr(Request.QueryString(SQL_Get),Sql_Inj(Sql_DATA))0 Then Response.Write"Script Language=*alert('SQL通用防注入系统提示↓nn请不要在参数中包含非法字符尝试注入!');history.back(-1)/Script"Response.end end if next Next End If

这样我们就实现了get请求的注入的拦截,但是我们还要过滤post请求,所以我们还得继续考虑request.form,这个也是以数组形式存在的,我们只需要再进一次循环判断即可。

代码如下

If Request.Form""Then For Each Sql_Post In Request.Form For SQL_Data=0 To Ubound(SQL_inj)if instr(Request.Form(Sql_Post),Sql_Inj(Sql_DATA))0 Then Response.Write"Script Language=*alert('SQL通用防注入系统提示↓nn请不要在参数中包含非法字符尝试注入!');history.back(-1)/Script"Response.end end if next next end if

好了大功告成,我们已经实现了get和post请求的信息拦截,你只需要在conn.asp之类的打开数据库文件之前引用这个页面即可。放心的继续开发你的程序,不用再考虑是否还会受到sql注入攻击。难道不是么?放在conn.asp里就行了。url=Request.ServerVariables("QUERY_STRING")if instr(url,";")=1 then url=Replace(url,";",";"):Response.Redirect("?"&url)end if'

屏蔽通过表单for each item in request.form stritem=lcase(server.HTMLEncode(Request.form(item)))if instr(stritem,"select")=1 or instr(stritem,"insert")=1 or instr(stritem,"update")=1 or instr(stritem,"delete")=1 or instr(stritem,"exec")=1 or instr(stritem,"declare")=1 then response.write("对不起,请不要输入非法字符!")response.end end if next
 

相关文章:
上一篇:SQL Server2008数据库的重要更改
下一篇:发个关于sqlserver彻底删除跟安装挂起的工具
最近更新