热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

网站注入与防范的方法

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

最近看到很多人的网站都被注入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)
+

'
,
''

''
,
''''
)
'



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


SQL code




create

trigger
tr_table_insertupdate


on
tablename


for

insert
,
update



as



if

exists
(


select

1

from
inserted


where
data
like

'
%%
'


)


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
&#43;&#43;
)

{

paras[j].Value

&#61;
stra[j];



}


int
strpid
&#61;

0
;


string
sqla
&#61;
sql.ToString();


try


{

SqlHelper.ExcuteNonQurey(sqla, CommandType.Text, paras);

//
执行添加数据





strpid

&#61;
Convert.ToInt32(SqlHelper.ExcuteSclare(sqla, CommandType.Text, paras));
//
获取刚才插入的id号







}


catch
(SqlException ex)

{

cmdreturn.Text

&#61;
ex.Message.ToString();



}



cmdreturn.Text

&#61;
strpid.ToString();



。。。。。。。。。








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


C# code



传输


string
szTmp
&#61;

"
safdsfdsafdsfytrsd
"
;

szTmp

&#61;
Server.UrlEncode(szTmp);

接收

STRING STRA

&#61;
Server.UrlDecode(request.querystring(szTmp));












8.把要使用的参数处理一下单引号&#xff0c;再放到SQL里面 
  例如 string stra&#61;aa.replace("&#39;","&#39;&#39;")

  用参数化SQL可以不用处理单引号
  指定参数类型和过滤掉单引号&#xff0c;就可以杜绝99.9%入侵了


另外说一句&#xff1a;网上那些被人奉如圣经的过滤 update insert  等关键字的程序是用处不大的  upupdatedate 过滤掉 update还是update
还会造成不必要的麻烦


推荐阅读
  • 第一部分:TSqlTop有两种用法1,限制查询结果集返回的行数或总行数的百分比。当将TOP与ORDERBY子句结合使用时,结果集限制为前N个已排序行;否则,以未定义的顺序返回前N个 ... [详细]
  • 一个不错的JDBC连接池教程(带具体例子)
    1.前言数据库应用,在许多软件系统中经常用到,是开发中大型系统不可缺少的辅助。但如果对数据库资源没有很好地管理(如:没有及时回收数据库的游 ... [详细]
  • linux json 写sql注入,sql注入之json注入(php代码)
    环境phpstudyphp服务端代码security数据库中的users表中的username,password字段用户名adminJSON服务端代码大家实际测试中注 ... [详细]
  • 安全3AAuthentication:认证Authorzation:授权Accouting|Audition:审计用户管理用户:UID:0,不一定是root,root的uid非0时 ... [详细]
  • Java工作流引擎关于数据加密流程(MD5数据加密防篡改)
    关键字:驰骋工作流程快速开发平台工作流程管理系统工作流引擎asp.net工作流引擎java工作流引擎.开发者表单拖拽式表单工作流系统流程数据加密md5数据保密流程数据防篡改软加密适 ... [详细]
  • 阿里云大数据计算服务MaxCompute (原名 ODPS)
     MaxCompute是阿里EB级计算平台,经过十年磨砺,它成为阿里巴巴集团数据中台的计算核心和阿里云大数据的基础服务。去年MaxCompute做了哪些工作,这些工作背后的原因是什 ... [详细]
  • 步骤一:明确主打的核心目标用户群(对应产品侧的定位)这个核心目标用户群体是该产品成功挤进市场的切入点,甚至是撬动市场的支点和撬杠。市面上几乎很少有产品是专门给一个群体用而对其他群体 ... [详细]
  • Adapter相当于C(Controller,控制器),listView相当于V(View,视图)用于显示数据为ListView提供数据的List,数组或数据库相当于MVC模式中的 ... [详细]
  • 摘自:https:www.cnblogs.comnick-huangp4076273.htmlselect*from(select'Nick'asitemfromd ... [详细]
  • oracle text db2,从Oracle 到DB2(一)
    在实际的软件项目的开发过程中,特别是在企业的应用系统集成(EAI)项目中广大开发人员经常遇到不同关系型数据库之间的数据移植问题。笔者根据自己在工作中的不同数据库数据移 ... [详细]
  • Echarts 3D地图图表
    需求:实现如图所示的3D地图图表(1)原本使用的highcharts没有3d地图的功能,搜索插件也没有可替代的方案ÿ ... [详细]
  • 首页#father{border:0pxso ... [详细]
  • 本篇内容主要讲解“JavaScript在网页设计中的嵌入应用方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小 ... [详细]
  • FF——————————–直接使用document.creatRange()来创建一个选区;默认是空的;使用selectNode(obj)来代替moveToElementText ... [详细]
  • JS加密解密
    leta=汪政..222RRRp767868^*%^*%344h哈哈;letb=udp.d(ud(a));//需要加密的内容letc=udp. ... [详细]
author-avatar
melanie_0409
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有