智睿软件_技术交流论坛综合站长Web程序开发 → 高效的防SQL注入函数


  共有23258人关注过本帖树形打印

主题:高效的防SQL注入函数

帅哥哟,离线,有人找我吗?
zhirui
  1楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:520 积分:8740 威望:0 精华:5 注册:2009-07-07
高效的防SQL注入函数  发帖心情 Post By:2009-10-26 20:44:16

FUNCTION CHECKSTR(ISTR)
DIM ISTR_FORM,SQL_KILL,SQL_KILL_1,SQL_KILL_2,ISTR_KILL
IF ISTR="" THEN EXIT FUNCTION
ISTR=LCase(ISTR)
ISTR_FORM=ISTR
SQL_KILL="'|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare|set|;|from|="
SQL_KILL_1=SPLIT(SQL_KILL,"|")
FOR EACH SQL_KILL_2 IN SQL_KILL_1
ISTR=REPLACE(ISTR,SQL_KILL_2,"")
NEXT
CHECKSTR=ISTR
ISTR_KILL=REPLACE(ISTR_FORM,ISTR,"")
IF ISTR<>ISTR_FORM THEN
RESPONSE.WRITE ""
RESPONSE.END
END IF
END FUNCTION
调用方法:

key=CHECKSTR(request.form("key"))

企业开源网站管理系统,中小型企业的成长伙伴 支持(0中立(0反对(0回到顶部
帅哥哟,离线,有人找我吗?
zhirui
  2楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:520 积分:8740 威望:0 精华:5 注册:2009-07-07
  发帖心情 Post By:2009-07-14 11:24:37

具体代码如下 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 "" 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 "