重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
一次new就会为相应的对象开辟一个空间
目前创新互联已为成百上千家的企业提供了网站建设、域名、雅安服务器托管、网站托管、服务器租用、企业网站设计、巫山网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
连续new,值是改变a1的指向,之前对象由于没有引用指向,将会变为“垃圾”。
java的垃圾回收机制,会在适当的时机,回收这块内存。
解析恶意代码的危害机制与防范
摘要:在当今互联网时代,很多人还在受着网页恶意代码的困扰,在网站代码编辑过程中,更会因为恶意代码的转载使用导致整个网页的瘫痪。本文就“恶意代码”的危害和防范来进行深入解析,以激发我们的安全防范意识,积极应对来自网络的安全威胁。
关键词:恶意代码Java Applet JavaScript ActiveX
一、恶意代码综述
恶意代码主要包括计算机病毒(Virus)、蠕虫(Worm)、木马程序(Trojan Horse)、后门程序(Backdoor)、逻辑炸弹(Logic Bomb)等等。它使用SCRIPT语言编写的一些恶意代码利用IE的漏洞来实现病毒植入。当用户登录某些含有网页病毒的网站时,网页病毒便被悄悄激活,这些病毒一旦激活,可以利用系统的一些资源进行破坏。
随着互联网信息技术的不断发展,代码的“恶意”性质及其给用户造成的危害已经引起普遍的关注,因此我们有必要对恶意代码进行一番了解,让其危害降低至最低程度。
二、恶意代码的表现形式
(一)网页病毒类恶意代码
网页病毒类恶意代码,顾名思义就是利用软件或系统操作平台的安全漏洞,通过嵌入在网页上HTML标记语言内的Java Applet 应用程序、JavaScript 脚本程序、ActiveX 网络交互支持自动执行,强行修改用户注册表及系统配置,或非法控制用户系统资源、盗取用户文件、恶意删除文件,甚至格式化硬盘的非法恶意程序。
根据目前较流行的常见网页病毒的作用对象及表现特征,网页病毒可以归纳为以下两大种类:
(1)通过Java Script、Applet、ActiveX 编辑的脚本程序修改IE 浏览器,表现为:
A 默认主页(首页)被修改;B 主页设置被屏蔽锁定,且设置选项无效不可修改;C 默认的IE 搜索引擎被修改;D 鼠标右键菜单被添加非法网站广告链接等。
(2)通过Java Script、Applet、ActiveX 编辑的脚本程序修改用户操作系统,表现为:
A 开机出现对话框(通常都是用户不知所云的内容);B 系统正常启动后,但IE 被锁定网址自动调用打开;C 格式化硬盘;D 非法读取或盗取用户文件;E 锁定禁用注册表,编辑reg,转自[星论文网] 注册表文件格式时出现打开方式错误。
(二)脚本类恶意代码
脚本实际上就是程序,一般都是由应用程序提供的编辑语言。应用程序包括Java Script、VBScript、应用程序的宏和操作系统的批处理语言等。脚本在每一种应用程序中所起的作用都是不相同的,比如在网页中可实现各种动态效果,在OFFICE 中通常是以“宏”来执行一系列命令和指令,可以实现任务执行的自动化,以提供效率,或者制造宏病毒。
(三)漏洞攻击类代码
是利用软件或者操作系统的漏洞而编写的程序,对用户系统或者网络服务器进行攻击。比如黑客利用微软IE 浏览器漏洞,编写漏洞攻击代码对用户进行攻击。
三、恶意代码的实现机制
恶意代码的行为表现各异,破坏程序千差万别,但基本作用机制大体相同,其整个作用过程分为6个部分:
①侵入系统。侵入系统是恶意代码实现其恶意目的的必要条件。恶意代码入侵的途径很多,如:从互联网下载的程序本身就可能含有恶意代码;接受已经感染恶意代码的电子邮件;从光盘或U盘往系统上安装未经审查的软件;黑客或者攻击者故意将恶意代码植入系统等。
②维持或提升现有特权。恶意代码的传播与破坏必须盗用用户或者进程的合法权限才能完成。
③隐蔽策略。为了不让系统发现恶意代码已经侵入系统,恶意代码可能会改名、删除源文件或者修改系统的安全策略来隐藏自己。
④潜伏。恶意代码侵入系统后,等待一定的条件,病毒具有足够的权限时,就发作进行破坏活动。
⑤破坏。恶意代码的本质具有破坏性,其目的是造成信息丢失、泄密,破坏系统完整性等。
⑥重复1至5对新的目标实施攻击过程。
四、恶意代码的防范方法
目前,恶意代码防范方法主要分为两方面:基于主机的恶意代码防范方法和基于网络的恶意代码防范方法。
(一)基于主机的恶意代码防范方法
①基于特征的扫描技术:基于主机的恶意代码防范方法是目前检测恶意代码最常用的技术。扫描程序工作之前,必须先建立恶意代码的特征文件,根据特征文件中的特征串,在扫描文件中进行匹配查找。用户通过更新特征文件更新扫描软件,查找最新的恶意代码版本。这种技术广泛地应用于目前的反病毒引擎中。
②校验和:校验和是一种保护信息资源完整性的控制技术,例如Hash 值和循环冗余码等。只要文件内部有一个比特发生了变化,校验和值就会改变。未被恶意代码感染的系统首先会生成检测数据,然后周期性地使用校验和法检测文件的改变情况。
③安全操作系统对恶意代码的防范:恶意代码成功入侵的重要一环是,获得系统的控制权,使操作系统为它分配系统资源。无论哪种恶意代码,无论要达到何种恶意目的,都必须具有相应的权限。否则它将不能实现其预定的恶意目标,或者仅能够实现其部分恶意目标。
(二)基于网络的恶意代码防范方法
由于恶意代码具有相当的复杂性和行为不确定性,恶意代码的防范需要多种技术综合应用,包括恶意代码监测与预警、恶意代码传播抑制、恶意代码漏洞自动修复、恶意代码阻断等。基于网络的恶意代码防范方法包括:恶意代码检测防御和恶意代码预警。
这些主要是网页恶意代码,也就是网页病毒造成的危害。而用脚本编写的蠕虫病毒的危害就更大了,它不再是针对一台计算机,而是迅速传播,对网络上所有计算机造成危害,直至网络被拖垮最后崩溃。
五、结语
在互联网信息化高速发展的今天,任何软件在编写时或多或少都有自己的漏洞,为此我们应该做到:
1)安全设置。我们上网浏览时不能抱有侥幸心理,不关心安全设置,认为恶意代码与我无缘,对最基本的浏览器安全设置问题也不关心,从而降低了系统抵御恶意代码的免疫能力,致使系统在遭遇恶意代码时不能幸免于难。
2)不浏览来历不明的网站。不要轻易去浏览一些来历不明的网站和下载相关内容。
3)软件升级,安装系统补丁。软件要及时更新版本,尤其是操作系统,一定要常“打”补丁常升级。
4)安装杀毒软件(防火墙)。安装并及时将杀毒软件(防火墙)升级至最新版本,同时开启实时监控功能并不定期杀毒,最大限度地把恶意代码拒之门外。 本文出自: http://,转自[星论文网]
对于每个编码人员来说,避免重复代码可能是大家都想做的。对于有一定经验(对基本的OO原则有一定经验)的开发人员来说,大部分情况下都能比较自然地避免重复代码的问题,写代码的时候,感觉有逻辑重复的情况,会很自然的凭感觉经验做相应的处理和复用。以下是个人经验,供新手参考。 既然我们在用Java之类的面向对象的语言编码,那么重复代码可以大致分为如下两种情况: 1、类型体系之内(父类型和子类型、子类型之间)存在重复逻辑代码 2、类型体系之外的重复代码 【类型体系内的重复代码处理】 1、如果重复代码属于类型本身操作(即应该是以实例方法存在),则很自然的应用重构技巧,公共代码往上走。如果Sub Type之间有这种重复代码,把重复代码迁移到DefaultAdatper中。 2、如果重复代码不属于类型本身操作(即应该是以静态方法存在),则需要判断一下这种静态代码的功能使用范围: A、如果是非常全局性的,例如有关java流的辅助操作,则应该果断的抽取出来,封装到一个Utility工具类中,例如可以叫做IOUtil。把这个Utility类放置到非常底层模块中,这样上层很多功能模块中都可以使用,否则可能会导致上层多个模块中都有类似IOUtil的类,又是重复代码。1publicclassIOUtil{2/**3 *工具类,不需要产生实例。但是也不需要应用单态!!!4*/5privateIOUtil(){}67publicstaticInputStreambuildInputSteam(Filefile){//}89//其他公共静态操作10} B、如果这种静态操作只对本类型体系有意义,则有两种常用的处理方法:第一种是把这种静态方法迁移到基类DefaultAdapter中,但是不要在DefaultAdapter中放置过多的类似静态方法;第二种是把这种静态方法封装到一个helper助手类中,例如MyTypeHelper,其中放置了MyType类型体系中需要使用的一些静态方法。如果第一种DefaultAdapter中堆放了较多的静态方法,则可以用helper助手类的方式。1publicclassMyTypeHelper{2/**3 *助手类,不需要产生实例。但是也不需要应用单态!!!4*/5privateMyTypeHelper(){}67publicstaticbooleanvalidateParamer(Objectparamer){//}89//其他公共静态操作10} 这个helper一般需要和接口、默认适配类一起暴露,便于扩展子类型使用。示意图如下: 【类型体系之外的重复代码处理】 类型体系之外的重复代码处理相对就很简单了,根据重复代码功能适用范围,封装到对应的Util类或者Helper类中。这里就不细讲了~_~ 【有关公用代码的几个概念】 个人意见,仅供参考。 助手类(Helper class) :我觉得首先这个类产生的目的是为特定模块或者特定功能服务的(助手吗~_~),不是全局的。而且完全可以隐藏在特定模块内部,很多时候不需要暴露。Helper类的命名要有针对性,不能搞成一个麻辣烫,里面的静态操作既为这种功能服务,又为那种功能服务,尽量做个忠臣,不要同时当多个主子的助手。 工具类(Utility class) :一般是全局的,往往有一定普世价值,也就是说往往是全局通用的。 例如你在做一个模块,这个模块功能是处理表单,则关于处理表单的一些公用静态操作就应该放置到该模块的一个助手类中,名称类似于FormProcesserHelper。再有一个导出报表的功能,则对应的助手类可以称之为ExportReportHelper,建议这两个helper不要混在一起。有人可能会说,这样会不会导致大量的助手类呢?这边有个粒度把握的问题(经验会发生作用~_~),但是只要是助手类命名规范,则一个助手类的名字就基本上可以告诉用户你提供什么样的服务了。 假如你现在处理的是有关IO操作的重复代码,则需要迁移到全局的工具类中,因为这样的操作往往适应于全局的。 Facade class(门面类) :这个乍看起来和助手类有点像,往往是绑定于特定模块。但是,要搞清楚,门面类是用来封装子系统的,代理对模块常用核心功能的访问的,针对用户需要的常用场景提供一些辅助操作,帮助用户更好的使用此模块的主要功能。 面向客户端或者其他子系统或模块的,不是用来处理对应模块中重复代码的 !!!有关详细信息,请参加Facade设计模式的文档。 【注意】Helper class、Utility class、Facade class一般都不需要生实例,暴露的都是静态操作,更不需要误写成单态,别滥用单态!!!后记:: 关于重复代码的处理,个人以为既需要技巧(别人总结出来的技巧),更需要经验(经验往往给你感觉,跟着感觉走一般就不会太离谱~_~)。 希望对开发新手有作用~_~
重复代码很容易产生,主要是因为开发的本质就是复制粘贴,找一段类似的逻辑做一个简单的额修改就上线了。这样做在开发的时候可能没啥问题,但是一旦重复代码变多,面对一个简单的修改修改就要在整个项目中不断地找,一个个修改,这样速度和效率不能保证,而且很容易出错。因而,使用能放弃死代码的编译器可以使模板代码产生更小的二进制