设为首页
加入收藏
帮助中心
首页 | 红盾通告 | 信息中心 | ASP技术 | 数据库 | 网页设计 | 网管专栏 | OICQ攻略 | 墨客频道 | 网站运营 |
当前位置:首页 >> ASP技术 >> ASP技巧 >> 正文
最新信息
·ASP防止采集的代码
·文字防复制乱码
·关于ASP中的UTF8编码
·ASP精典之常用函数收集
·用正则式除去HTML标记
·ASP国际化多语言详细方案
·改进 ASP 的字符串处理性能
·ASP缓存技术
·巧用ASP技术保护DHTML源代…
·ASP读取系统时区的错误行为…
资料搜索
热点信息
·删除数组中的重复元素
·ASP中转换unicode码为GB码…
·asp得到当前页地址
·关于ASP中的UTF8编码
·判断上一页的来源
·Asp中有关字符编码转换的几…
·用正则式除去HTML标记
·ASP 三十二条精华代码
·动检测上传文件是否含有非…
·常用过滤函数
推荐信息
·ASP 三十二条精华代码
·ASP中转换unicode码为GB码…
·如何拒绝同一张表单被多次…
·常用过滤函数
·常用asp代码
·Asp中有关字符编码转换的几…
·获得上一个月几月
·计算文件下载时间
·三条语句搞定路径
·判断上一页的来源


Google
 
飞腾工作室超强数据检测过滤函数
〖来源:飞腾设计网 | 作者:雨城 | 编辑:Cloudy | 浏览:人次〗

在数据库入库操作前,要对用户提交的数据做检测,如果提交数据项较多,那么检测代码就可能很长,因此,检测代码函数化是比较好的选择,这样提高了代码的重用率,减少了代码的冗余。

    '==================================
    '=函 数 名:checksql(name,str,attrib,num)
    '=使用说明:name-参数名(用于错误显示),str-参数值(用于判断),attrib-参数类型(1为字符型,0为数字型),num-参数值字符数量(字符型中0表示不限制,数字型任何情况下都有限制)
    '==================================
    Function checksql(name,str,attrib,num)
     dim founderr,errmsg
     founderr=false
     errmsg=""
     dim sqlname
     sqlname=name
     if attrib=1 then
     dim Bword(18)
     Bword(0)="?"
     Bword(1)=";"
     Bword(2)=">"
     Bword(3)="<"
     Bword(4)="-"
     Bword(5)="’"
     Bword(6)="””"
     Bword(7)="&"
     Bword(8)="%"
     Bword(9)="$"
     Bword(10)="'"
     Bword(11)=":"
     Bword(12)="|"
     Bword(13)="("
     Bword(14)=")"
     Bword(15)="--"
     Bword(16)=" chr(9)"
     Bword(17)=" chr(34)"
     Bword(18)=" chr(32)"
     for i= 0 to ubound(Bword)
     if instr(str,Bword(i))<>0 then
     founderr=true
     errmsg=errmsg+"<br><li>"&sqlname&"中含有非法字符(各种符号)!</li>"
     end if
     next
     if str="" then
     founderr=true
     errmsg=errmsg+"<br><li>"&sqlname&"不能为空!</li>"
     elseif num<>0 then
     if len(str)>num then
     founderr=true
     errmsg=errmsg+"<br><li>"&sqlname&"不能超过"&num&"字符!</li>"
     end if
     end if
     elseif attrib=0 then
     if str="" then
     founderr=true
     errmsg=errmsg+"<br><li>"&sqlname&"不能为空!</li>"
     elseif not isnumeric(str) then
     founderr=true
     errmsg=errmsg+"<br><li>"&sqlname&"不是数字型!</li>"
     elseif len(str)>num then
     founderr=true
     errmsg=errmsg+"<br><li>"&sqlname&"数字型参数位数不能超过"&num&"!</li>"
     end if
     else
     founderr=true
     errmsg=errmsg+"<br><li>过滤函数调用错误!</li>"
     end if
     if founderr then
     response.write errmsg
     response.end
     end if
     checksql=str
    End Function

    注意:

    本代码中对于没有限制字符数量的内容也作了非法字符检测。

    一般来说,不限制字符数量的字段一般都是备注型,如果你需要在这个字段内容中显示那些字符,那么可以把非法字符检测那段代码(即bword段)放于if num<>0 then里面即可,而备注字段的安全检测单独设置。

    如果备注字段采用了各种编辑器,那么其安全性由编辑器提供;如果仅使用UBB的话,那么可以加入以下一段:

    if num<>0 then
    ……
    else
     str = replace(str, ">", ">")
     str = replace(str, "<", "<")
     str = replace(str, "&#", "&")
     str = Replace(str, CHR(32), "  ")
     str = Replace(str, CHR(9), " ")
     str = Replace(str, CHR(34), """)
     str = Replace(str, CHR(39), "'")
     str = Replace(str, CHR(13), "")
     str = Replace(str, CHR(10) & CHR(10), "</P><P> ")
     str = Replace(str, CHR(10), "<BR> ")
    end if

    其实,代码是次要的,掌握思想和方法才是最重要的

    哈哈,忘了举个实例了:

poster=checksql("作者",request.form("poster"),1,10)
    含义是:检测由form提交的poster字段值,字段对应名称为作者,为字符型数据,长度不能超过10个字符。


录入时间:2006-12-25 00:14:36 [打印本页] [关闭窗口] [返回顶部]
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

Copyright © 2006-2014 0733168.Com Inc All Rights Reserved
关于我们 | 广告合作 | 联系我们 | 法律声明 | 友情链接 | 意见反馈
本站所收录信息、社区话题、及本站所做之广告均属其个人行为,与本站立场无关
湘ICP备06008436号