在asp中加入了防止sql注入代码 如何输入符号
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在asp中加入了防止sql注入代码 如何输入符号相关的知识,希望对你有一定的参考价值。
为了防止SQL注入,我的程序加入了如下代码 <% Response.Buffer = True '缓存页面 '防范get注入 If Request.QueryString <> "" Then StopInjection(Request.QueryString) '防范post注入 If Request.Form <> "" Then StopInjection(Request.Form) '防范cookies注入 If Request.Cookies <> "" Then StopInjection(Request.Cookies) '正则子函数 Function StopInjection(Values) Dim regEx Set regEx = New RegExp regEx.IgnoreCase = True regEx.Global = True regEx.Pattern = "'|;|#|([\s\b+()]+([email=select%7Cupdate%7Cinsert%7Cdelete%7Cdeclare%7C@%7Cexec%7Cdbcc%7Calter%7Cdrop%7Ccreate%7Cbackup%7Cif%7Celse%7Cend%7Cand%7Cor%7Cadd%7Cset%7Copen%7Cclose%7Cuse%7Cbegin%7Cretun%7Cas%7Cgo%7Cexists)[/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[/email]+]*)" Dim sItem, sValue For Each sItem In Values sValue = Values(sItem) If regEx.Test(sValue) Then Response.Write "<Script Language=javascript>alert('非法注入!你的行为已被记录!!');history.back(-1);</Script>" Response.End End If Next Set regEx = Nothing End function %> 但是,如果我的表单中出现";"和","等符号时,就不能成功提交.如何解决.
参考技术A 这个很简单啊,你提交表单的时候一般都是登陆了系统的,这样的话,一般的系统都是通过session来验证用户登陆信息的,你可以在最前面加上:<%
If
session("username")<>"admin"
then
..........'你的SQL注入代码
End
if
%>
以上的代码意思是,如果用户信息不是admin(一般admin是管理员的账户,根据你网站的情况具体修改即可)就执行SQL注入检测。当然你用的SESSION名字可能不一样,比如:session("master")或session("user")之类的,根据具体情况修改即可,有问题可以百度HI我!
什么是sql注入如何防止sql注入
SQL注入是一种非常常见的数据库攻击手段,同时也是网络世界中最普遍的漏洞之一,简单理解就是恶意用户通过在表单中填写包含SQL关键字的数据来使数据库执行非常规代码的过程。问题来源是,SQL数据库的操作是通过SQL语句来执行的,而无论是执行代码还是数据项都必须写在SQL语句中,也就导致如果我们在数据项中加入了某些SQL语句关键字,比如SELECT、DROP等,这些关键字就很有可能在数据库写入或读取数据时得到执行。
解决方案
方案一:
采用预编译技术
使用预编译的SQL语句,SQL语句的语义不会是不会发生改变的。预编译语句在创建的时候就已经将指定的SQL语句发送给了DBMS,完成了解析,检查,编译等工作,所以攻击者无法改变SQL语句的结构,只是把值赋给?,然后将?这个变量传给SQL语句。当然还有一些通过预编译绕过某些安全防护的操作,大家感兴趣可以去搜索一下。
方案二:
严格控制数据类型
在java、c等强类型语言中一般是不存在数字型注入的,因为在接受到用户输入id时,代码一般会做一个int id 的数据类型转换,假如我们输入的是字符串的话,那么这种情况下,程序就会报错。但是在PHP、ASP这些没有强调处理数据类型的语言,一般我们看到的接收id的代码都是如下等代码。
方案三:
对特殊的字符进行转义
数字型注入可以通过检查数据类型防止,但是字符型不可以,那么怎么办呢,最好的办法就是对特殊的字符进行转义了。比如在MySQL中我们可以对" '
"进行转义,这样就防止了一些恶意攻击者来闭合语句。当然我们也可以通过一些安全函数来转义特殊字符。如addslashes()等,但是这些函数并非一劳永逸,攻击者还可以通过一些特殊的方式绕过。 参考技术A 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入
以上是关于在asp中加入了防止sql注入代码 如何输入符号的主要内容,如果未能解决你的问题,请参考以下文章