zoukankan      html  css  js  c++  java
  • 消除数据库JS入侵的脚本

    这几天接连被问到网站数据库被sql注入后很多字段被改加了js代码,网上查了一下,看来也是批处理写入的,那么只有用同样的办法来解决了

     上代码


    代码
    CREATE PROCEDURE spCheckJsInjection AS  
    declare @t varchar(
    555),@c varchar(555)   
    declare table_cursor cursor 
    for select a.name,b.name from sysobjects a,syscolumns b where a.id=b.id and a.xtype='u' and (b.xtype=35 or b.xtype=99 or b.xtype=231 or b.xtype=167 )  
    open table_cursor  
    fetch next from table_cursor into @t,@c  
    while(@@fetch_status=0)  
    begin  
    exec(
    '  
    if exists (select * from ['+@t+']  where ['+@c+'] like ''%<script%'')  
        begin  
     update [
    '+@t+'set ['+@c+']=left(cast(['+@c+'as varchar),CHARINDEX(''<script'', ['+@c+'])-1where ['+@c+'] like ''%<script%''  
        end  
    ' )  
    fetch next from table_cursor into @t,@c  
    end  
    close table_cursor  
    deallocate table_cursor;  
      


    上面判断凡是<script打头的内容,其后面全部过滤掉,这样可以解决这个问题。但如果要彻底解决问题,我认为比较快的解决办法不是要求所有人去改程序,这个不现实,自己的东西还好说,别人的东西是不允许你随便改的。那么怎么办呢?比较完美快速的办法就是readonly账号和owner账号分开用,select操作一律用readonly,这样通过url参数传递的注入可以有效屏蔽。同样,对于sql注入这类问题,我觉得与其只是在程序上注意外,数据库权限账号的合理设置是必须的,这个防线可以解决很大的开发问题带来的影响。

     另外,经过上述设置后,哪些网站数据库运行了相当长的时间也没有出现这种问题了。据说以前是几分钟就被改写。这些做木马的人也是太可恶的,为了赚钱不择手段啊。几分钟的频率去注入别人的数据库,当别人不用这个网站啊,呵呵。

  • 相关阅读:
    开始学习Angular Mobile UI
    .Net程序员飞扬有用的85个工具
    数据库查询效率,百万数据测试
    SQL Join的一些总结
    MODRD 指令 读取地址是哪儿来的
    如何在不同编程语言中获取现在的Unix时间戳(Unix timestamp)?
    easyui datagrid 的分页刷新按钮
    HttpRequest Get Post,WebClient Get
    GetWindowThreadProcessId用法(转)
    EASYUI DATAGRID 多列复选框CheckBox
  • 原文地址:https://www.cnblogs.com/emilchan/p/1608879.html
Copyright © 2011-2022 走看看