以文本方式查看主题 - 智睿软件_技术交流论坛 (http://zhirui.net/bbs/index.asp) -- Web程序开发 (http://zhirui.net/bbs/list.asp?boardid=22) ---- 高效的防SQL注入函数 (http://zhirui.net/bbs/dispbbs.asp?boardid=22&id=8) |
-- 作者:zhirui -- 发布时间:2009-10-26 20:44:16 -- 高效的防SQL注入函数 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")) |
-- 作者:zhirui -- 发布时间: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 " |