账号通
    

账号  

密码  

2948

查看

2

回复
主题:浅谈科讯系统的SQL防注入对英文站的影响,也是个小BUG吧 [收藏主题]  
linzi1688 当前离线

376

主题

0

广播

2

粉丝
添加关注
级别:三年级

用户积分:3385 分
登录次数:217 次
注册时间:2006/8/21
最后登录:2022/3/9
linzi1688 发表于:2010/1/14 11:15:00   | 只看该作者 查看该作者主题 楼主 
科讯的SQL防注入的代码是:
    Function DelSql(Str)
        Dim SplitSqlStr,SplitSqlArr,I
        SplitSqlStr="dbcc|alter|drop|*|and |exec|or |insert|select|delete|update|count |master|truncate|declare|char|mid|chr|set |where|xp_cmdshell"
        SplitSqlArr = Split(SplitSqlStr,"|")
        For I=LBound(SplitSqlArr) To Ubound(SplitSqlArr)
            If Instr(LCase(Str),SplitSqlArr(I))>0 Then
                'Die "<script>alert('系统警告!\n\n1、您提交的数据有恶意字符" & SplitSqlArr(I) &";\n2、您的数据已经被记录;\n3、您的IP:"&GetIP&";\n4、操作日期:"&Now&";!');window.close();</script>"
                Die "<script>alert('系统警告!\n\n1、您提交的数据有恶意字符;\n2、您的数据已经被记录;\n3、您的IP:"&GetIP&";\n4、操作日期:"&Now&";!');window.close();</script>"
            End if
        Next
        DelSql = Str
    End Function

这样的话中文站不用在担心SQL注入了,但是做英文站的时候客户提交的信息中很多会遇到正常使用如and、or、insert、select、delete、update、count 、master、set、where等单词的话就行不通了,我现在也没有想到好的方法
我的做法是把那段过滤的词暂时改为:SplitSqlStr="dbcc|*|KS_ |ks_|exec|chr|xp_cmdshell"
不知道大家有没有更好的方法过来共同讨论下了!
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
linzi1688 当前离线

376

主题

0

广播

2

粉丝
添加关注
级别:三年级

用户积分:3385 分
登录次数:217 次
注册时间:2006/8/21
最后登录:2022/3/9
linzi1688 发表于:2010/1/15 0:06:00   | 只看该作者 查看该作者主题 沙发 
科汛在线考试系统(NET)
 怎么就没有人用这个系统做过英文站的过来讨论下了
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
zhaopeil 当前离线

28

主题

0

广播

0

粉丝
添加关注
级别:学前班

用户积分:427 分
登录次数:23 次
注册时间:2006/9/29
最后登录:2011/6/24
zhaopeil 发表于:2010/1/14 15:09:00   | 只看该作者 查看该作者主题 藤椅 
科汛在线考试系统(NET)
 这个好像没有办法

如果是用的英文操作系统和英文数据库,那么即便使用单引号,也是完全合法的,而无需替换

这个只有根据实际情况来处理了.
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
<上一主题 | 下一主题 >
Powered By KesionCMS Version X1
厦门科汛软件有限公司 © 2006-2016 页面执行0.07813秒 powered by KesionCMS 9.0