快速业务通道

网站注入与防范的方法小结

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-04-11

1.如何批量删除数据库中被注入的代码?在数据库查询分析器运行这段代码即可
DECLARE @fieldtype sysname
SET @fieldtype=''varchar''
--删除处理
DECLARE hCForEach CURSOR GLOBAL
FOR
SELECT N''update ''+QUOTENAME(o.name)
   
+N'' set ''+ QUOTENAME(c.name) + N'' = replace('' + QUOTENAME(c.name) + '',''''<script_src=http://ucmal.com/0.js> </script>'''','''''''')''
FROM sysobjects o,syscolumns c,systypes t
WHERE o.id=c.id
   
AND OBJECTPROPERTY(o.id,N''IsUserTable'')=1
   
AND c.xusertype=t.xusertype
   
AND t.name=@fieldtype
EXEC sp_MSforeach_Worker @command1=N''?''

2.创建一个触发器,只要有</script>就不给插入,对性能会有点影响

create trigger tr_table_insertupdate
on tablename
for insert,update
as
if exists (
select 1 from inserted
where data like ''%</script>%''
)
begin
      
RAISERROR (''不能修改或者添加'',16,1);
      
ROLLBACK TRANSACTION
end
go

3.最重要的还是程序的写法,用参数化SQL或存储过程
例如
protected void cmdok_Click(object sender, EventArgs e)
    {
       
//添加信息
        StringBuilder  sql = new StringBuilder( " insert into m_phone ( pid,PhoneName,num,price,phonetype,onSellTime,color,weight,Video,Camera,phoneSize,phoneSystem,Memorysize,PhoneDesc,Standbytime,ScreenSize,Frequency,InputMethod,Soundrecord,gps,fm,mp3,email,Infrared,game,clock,Calendar,Calculator,Bluetooth)  ");

        sql.Append(
" values (@pid,@TextPhoneName,@Textnum,@Textprice,@Dropphonetype2,@TextonSellTime,@Textcolor,@Textweight ");
       
        .................

        SqlParameter[] paras
= { new SqlParameter("@pid", SqlDbType.Int, 4) ,
           
new SqlParameter("@TextPhoneName", SqlDbType.NVarChar, 50) ,
           
new SqlParameter("@Textnum", SqlDbType.Int, 4) ,
           
new SqlParameter("@Textprice", SqlDbType.Int, 4) ,
           
new SqlParameter("@Dropphonetype2", SqlDbType.VarChar, 20) ,
           
new SqlParameter("@TextonSellTime", SqlDbType.DateTime, 8) ,
           
new SqlParameter("@Textcolor", SqlDbType.VarChar, 20) ,
           
new SqlParameter("@Textweight", SqlDbType.NVarChar, 50) ,

           ...........
        };
       
string[] stra = {Dropphonetype.SelectedValue,TextPhoneName.Text , Textnum.Text, Textprice.Text, Dropphonetype2.SelectedValue, TextonSellTime.Text, Textcolor.Text, Textweight.Text,
            .............};

       
int a=stra.Length;
       
int j;
       
       
for ( j = 0; j < a; j++)
        {
            paras[j].Value
= stra[j];
          
        }
       
int strpid = 0;
       
string sqla = sql.ToString();
       
try
        {
            SqlHelper.ExcuteNonQurey(sqla, CommandType.Text, paras);
//执行添加数据
          
            strpid
= Convert.ToInt32(SqlHelper.ExcuteSclare(sqla, CommandType.Text, paras));  //获取刚才插入的id号


        }
       
catch (SqlException ex)
        {
            cmdreturn.Text
= ex.Message.ToString();

        }

        cmdreturn.Text
= strpid.ToString();

。。。。。。。。。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号