一、前言
随着网络计算机信息技术的高速发展,互联网上的信息发布和信息获取越来越深入到人们的生活和工作。但是病毒的入侵,黑客的攻击等安全隐患时时困扰着人们,网站安全管理刻不容缓,越来越多的IT人士开始了关于网络、网站的安全性管理研究。
网站安全目前已发展成为一个跨学科的综合性学科,它包括通信技术、网站技术、计算机软件、硬件设计技术、密码学、网站安全与计算机安全技术等,网站安全是在攻击与防范这一对矛盾相互作用的过程中发展起来的。新的攻击导致必须研究新的防护措施,新的防护措施又招致攻击者新的攻击,如此循环反复,网站安全技术也就在双方的争斗中逐步完善发展起来。
网站安全是指对网站进行管理和控制,并采取一定的技术措施,从而确保在一个网站环境里信息数据的机密化、完整性及可使用性受到有效的保护。其主要目标就是要稳妥地确保经由网站传达的信息总能够在到达目的地时没有任何增加、改变、丢失或被他人非法读取。要做到这一点,必须保证网站系统软件、数据库系统其有一定的安全保护功能,并保证网站部件如终端、数据链路等的功能不变而且仅仅是那些被授权的人们可以访问。
二、网络安全隐患的主要因素概述
影响网站安全的问题主要来自于网络的不安全性,所以在这个意义上讲,网站的安全漏洞其实也就是网络的安全漏洞,其漏洞主要来自以下几个方面:
(一)自然因素:
1、软件漏洞
即使再完美的系统软件和应用软件也不能保证是百分之百的无缺陷和无漏洞的,而这些缺陷和漏洞恰恰是非法用户、黑客进行窃取机密信息和破坏信息的首选途径。针对固有的安全漏洞进行攻击,主要在以下几个方面:
(1)协议漏洞。例如,IMAP和POP3协议一定要在Unix根目录下运行,攻击者利用这一漏洞攻击IMAP破坏系统的根目录,从而获得超级用户的特权。
(2)缓冲区溢出。很多系统在不检查程序与缓冲区之间变化的情况下,就接受任何长度的数据输入,把溢出部分放在堆栈内,系统仍照常执行命令。攻击者就利用这一漏洞发送超出缓冲区所能处理的长度的指令,来造成系统不稳定状态。
(3)口令攻击。例如,Unix系统软件通常把加密的口令保存在一个文件中,而该文件可通过拷贝或口令破译方法受到入侵。因此,任何不及时更新的系统,都是容易被攻击的。
2、病毒攻击
计算机病毒的主要危害有:对计算机数据信息的直接破坏作用,给用户造成重大损失:占用系统资源并影响运行速度:产生其他不可预见的危害:给用户造成严重的心理压力。计算机病毒一般分为四类:①文件型病毒(FileViruses);②引导型病毒(SystemorBootSectorVirus);③链式病毒(SYSTEMorCLUSTERVirus);④宏病毒(MacroVirus)。
(二)人为因素:
1、操作失误
操作员安全意识不强、安全配置不当、用户口令选择不慎.、将自己的帐号随意转借他人或与别人共享等造成的安全漏洞,都会对网络安全带来威胁。但是随着网络管理制度的建立和对使用人员的培训,此种情况逐渐减少.对网络安全己不构成主要威胁。
2、黑客攻击
这是当前计算机网络所面临的最大威胁,敌手的攻击和计算机犯罪就属于这一类。此类攻击又可以分为以下两种:一种是主动攻击,它以各种方式有选择地破坏信息的有效性和完整性;另一类是被动攻击,它是在不影响网络正常工作的情况下,进行截获、窃取、破译以获得重要机密信急。
3、用户输入验证不全面
在网站编程中,对于用户和用户的输入,都必须抱怀疑态度,不能完全信任。所以,对于用户的输入,不能简单的直接采用,而必须经过严格验证,确定用户的输入是否符合输入规则才可以录入数据库。用户输入验证应该包括以下几个方面:
(1)输入信息长度验证。程序员往往认为一般用户不会故意将输入过分拉长,不进行输入验证可能没有危害。但如果用户输入的信息达到几个兆,而程序又没有验证长度的话,可以使程序验证出错或变量占用大量内存,出现内存溢出,致使服务器服务停止甚至关机。
(2)输入信息敏感字符检查。在设计程序的时候,程序员可能都会关注JavaScript的一些敏感字符,如在设计留言版的时候,会将“<”等符号的信息过滤,以免用户留下页面炸弹。但还有以下几个方面需要特别注意,一是留言版内容信息的过滤。二是用户名信息的过滤。程序设计中,对用户名的验证往往只是验证长度,没有验证JavaScript或者HTML的标记,这样就容易形成漏洞。三是Email信息的验证,Email信息往往也只验证是否含有“@”符号,其他没有限制,这容易形成两个漏洞:输入信息过长的内存溢出漏洞;含有JavaScript等字符信息,造成显示用户Email的时候形成页面炸弹等。四是搜索信息的验证。尽管搜索信息不会直接保存到网站服务器,但是,搜索信息却与数据库或者服务器所有文件密切相关,如果搜索信息有问题,很容易就会暴露一些本来不应该暴露的数据库信息或者文件信息。如果用户对程序比较了解,可设计一些很特别的搜索信息,检索他不应该检索的数据库表,例如用户账号密码表等。因此,一般要验证一些常见的用于数据库操作的语句,例如搜索信息是否含有“Select”等,这样来限制用户输入,避免信息的泄露。