asp 防止SQL注入方式

最近一直在考虑一个问题。
制作学校的报名页面时,在页面中有关于学生毕业学校、毕业班级、班主任和班主任手机的输入栏。
输入毕业学校和毕业班级都是下拉选择框,不会出错、也不麻烦!但是就是输入班主任和班主任手机时,经常出错,教师在录入大量学生时也会很麻烦。
如果不考虑批量输入的话,
我的意思是,数据库中已经有三个表,分别是
【school】学校: id schoolname
1 尚德中学
2 育才中学
.. ....

【class】班级 id class
1 初三一班
2 初三二班
.. ....

【teacher】教师 id name mobile schoolid classid
1 李军 56500001 1 1
2 王二 56500002 1 2
3 张三 56500066 1 3
4 赵氏 56500007 2 1
5 临安 56500444 3 1
.. .... ..... .. ..

每个学校和每个班级的班主任和手机号码都在【teacher】的表中。
能不能实现,当学生依次选择了【学校】和【班级】后,班主任和班主任手机处就会直接得出对应的班主任姓名和手机号呢?
asp系统、ACCESS数据库

这个问题曾遇到过,以解决。具体的网上有很多,现贴出来,希望对你有所帮助。
如果编写通用的SQL防注入程序一般的http请求不外乎get 和 post,所以只要我们在文件中过滤所有post或者get请求中的参数信息中非法字符即可,所以我们实现http 请求信息过滤就可以判断是是否受到SQL注入攻击。

· 全国格斗大赛开始

· 银行卡 安全快捷换Q币

· 沟通无极限手机Q时代

· 魔法表情秀出百变心情

· 全国格斗大赛开始

· QQ秀 秀出个性真自我

IIS传递给asp.dll的get 请求是是以字符串的形式,,当 传递给Request.QueryString数据后,asp解析器会分析Request.QueryString的信息,,然后根据"&",分出各个数组内的数据所以get的拦截如下:

首先我们定义请求中不能包含如下字符:

|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare

各个字符用"|"隔开,,然后我们判断的得到的Request.QueryString,具体代码如下 :

dim sql_injdata

SQL_injdata = "'|and|exec|insert|select|delete|update|count|*|%|chr|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请不要在参数中包含非法字符尝试注入!nnHTTP: //www.521movie.com ');history.back(-1)</Script>"

Response.end

end if

next

next

end if

好了大功告成,我们已经实现了get和post请求的信息拦截,你只需要在conn.asp之类的打开数据库文件之前引用这个页面即可。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-06-07
过滤单引号
第2个回答  2010-06-07
现在还学ASP?为啥不学ASP.NET C#呢?C#找工作比VB容易多了。趁现在没学多久,赶紧换吧。。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网