扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
WEB服务所面临的安全威胁大致可归纳为以下两种:一种是机密信息所面临的安全威胁,一种是WWW服务器和浏览器主机所面临的安全威胁。其中,前一种安全威胁是 Internet 上各种服务所共有的,而后一种威胁则是由扩展 WEB 服务的某些软件所带来的,是用户在浏览网页时能切身感受到的。这两种安全隐患使得保护机密信息的安全更加困难。
1. WWW服务器和浏览器主机所面临的安全威胁
(1)CGI所带来的威胁
CGI是英文Common Gateway Interface(通用网关接口)的缩写,CGI在服务器端与WEB服务器相互配合,响应远程用户的交互性请求。它允许用户选择一种语言,如C/C++、Perl、UNIX Shel l、VB等进行编程,提供在服务器端和远程浏览之间的信息交互功能。
WEB服务器一般使用环境变量传输有关的请求信息到CGI程序,这些环境变量包括服务器的名字、CGI和服务器使用协议的版本号、客户端的IP地址和域名、客户端的请求方式、请求内容及编码方式、合法性访问信息及用户的输入信息等。
CGI Script是WEB安全漏洞的主要来源。其安全漏洞存在于以下三个方面:
1)它们会泄露主机系统的信息,帮助黑客入侵;
2)当服务器处理远程用户输入的某些信息(如表格)时,容易被远程的用户攻击;
3)不规范的第三方CGI程序,或存有恶意的客户发布给WEB服务器的CGI程序,会对WEB服务器造成物理或逻辑上的损坏,甚至可以将WEB服务器上的整个硬盘信息拷贝到Internet的某一台主机上。
(2)Java小程序所带来的威胁
Java是由美国Sun MicroSystems公司于1995年推出的一种跨平台和具有交互能力的计算机程序语言,被公认为具有简单、面向对象、分布式、健壮、安全、结构中立、可移植、高效、多线程和动态等优点。其中Ja va Applet(Java小程序)为WEB服务提供了相当好的扩展能力,并且为各种通用的浏览器,如InternetExplorer、Netscape 所支持。Java 小程序由浏览器进行解释并在客户端执行,因此它把安全风险直接从服务器端转移到了客户端。
尽管在实现 Java 小程序时进行了很多安全方面的考虑,但在发行后的很短时间内,在 Java 中就发现了很多Bug而引起的安全漏洞。
此外,Java Script作为Java Applet在浏览器中实现的语言,还存在着以下一些安全漏洞:
1)可以欺骗用户,将本地硬盘或网络上的文件传输给Internet上的任意主机;
2)能获得用户本地硬盘和任何网络盘上的目录列表;
3)能监视用户某段时间内访问过的所有网页,捕捉URL并将它们传送到Internet上的某台主机中;
4)能够不经用户允许而触发Netscape Navigator发送出E-mail信息。
在以后的版本中已经对这些 Bug 进行了修正,但在具体的运用中,我们仍然要警惕 Java 小程序所带来的威胁。
(3)ActiveX控件所带来的威胁
ActiveX是微软在COM(Component Object Model组件对象模型)之上建立的一种理论和概念,同时也是一种新的编程标准,可以用任何一种面向对象的语言加以实现,如 VC、VB 等,用这种规范建立起来的ActiveX控件真正实现了多语言编程的无缝接合,同时,这种控件也可以嵌入HTML文件中,形成具有一定功能的程序模块。
由于ActiveX控件被嵌入到HTML页面中,并下载浏览器端加以执行,因此会给浏览器端造成一定程度的安全威胁。此外,目前已有证据表明,在客户端的浏览器中,如IE中插入某些ActiveX控件,也将直接对服务器端造成意想不到的安全威胁。
还有一些其他技术如内嵌于IE的VB Script语言,用这种语言生成的客户端执行的程序模块,也和Java小程序一样,有可能给客户端带来安全性能上的漏洞。此外,还有一些新技术,如ASP(Active server Pages)技术,由于用户可以为ASP的输出随意增加客户脚本、ActiveX控件和动态HTML,因此在ASP脚本中同样也都存在着一定的安全隐患。
2. 解决WEB服务安全威胁的防御措施
为了确保 WEB 服务的安全,通常采用下列技术措施:在现有的网络上安装防火墙,对需要保护的资源建立隔离区;对机密敏感的信息进行加密存储和传输;在现有网络协议的基础上,为C/S通信双方提供身份认证并通过加密手段建立秘密通道;对没有安全保证的软件实施数字签名,提供审计、追踪手段,保证一旦出现问题,可立即根据审计日志进行追查等。
(1)安装防火墙
为自己的局域网或站点提供隔离保护,是目前普遍采用的一种安全有效的方法,这种方法不是只针对WEB服务,对其他服务也同样有效。
局域网的防火墙是一个位于内部网络与 Internet 之间的计算机或网络设备中的一个功能模块,是按照一定的安全策略建立起来的硬件和软件的有机组成体,其目的是为内部网络或主机提供安全保护,控制谁可以从外部访问内部受保护的对象,谁可以从内部网络访问Internet,以及相互之间以哪种方式进行访问。
从其运行机制上可以分为包过滤和代理两种。
包过滤主要是针对特定IP地址的主机所提供的服务,其基本原理是在网络传输的IP层截获往来的IP包,查找出IP包的源地址和目的地址、源端口号和目的端口号,以及IP包包头中其他一些信息,并根据一定的过滤原则,确定是否对此IP包进行转发。简单的包过滤在路由器上即可实现, 常放置在路由器的后面,同时在过滤的基础上可以加上其他安全技术,如加密、认证等,从而实现较高的安全性。
代理在应用层实现,其基本原理是对 WEB 服务单独构造一个代理程序,不允许客户程序与服务器程序直接交互,必须通过双方的代理程序才能进行信息交互;还可以在代理程序中实现其他的安全控制措施,如用户认证和报文加密等,从而达到更高的安全性能。代理根据所代理的对象及所放的位置,又可分为客户端代理和服务器端代理。客户端代理主要是保护浏览器一方主机的安全,服务器端代理主要是保护服务器的安全。
(2)对机密信息实施加密保护
对机密信息进行加密存储和传输是传统而有效的方法,这种方法对保护机密信息的安全特别有效,能够防止搭线窃听和黑客入侵,在目前基于WEB服务的一些网络安全协议中得到了广泛的应用。
在WEB服务中的传输加密一般在应用层实现。WWW服务器在发送机密信息时,首先根据接收方的IP地址或其他标识,选取密钥对信息进行加密运算;浏览器在接收到加密数据后,根据IP包中信息的源地址或其他标识对加密数据进行解密运算,从而得到所需的数据。在目前流行的WWW服务器和浏览器中,如微软公司的IIS服务器和浏览器IE,都可以对信息进行加解密运算,同时也留有接口,用户可以对这些加解密算法进行重载,构造自己的加密解密模块。此外,对信息的传输与加解密也可以在IP层实现,通过对进出的所有信息进行加解密,以保证在网络层的信息安全。
(3)为客户/服务器通信双方提供身份认证,建立安全信道
目前已经出现了建立在现有网络协议基础上的一些网络安全协议,如SSL和PCT。这两种协议主要是用于保护机密信息,同时也用于防止其他非法用户侵入自己的主机,给自己带来安全威胁。
SSL协议是美国Netscape公司最早提出的一种包括服务器的认证、签名、加密技术的私有通信,可提供对服务器的认证,根据服务器的选项,还可提供对客户端的认证。SSL协议可运行在任何一种可靠的传输协议之上,如TCP ,但它并不依赖于TCP,并能够运行在HTTP、FTP、Telnet等应用协议之下,为其提供安全的通信。SSL协议使用X.509 V3认证标准,RSA、diffie-Hellman和Fortezza-KEA算法作为其公钥算法,使用RC4-128、RC-128、DES、3层DWS或IDEA作为其数据加密算法。PCT提供了比SSL更加丰富的认证方案、加密算法,并在某些协议细节上作了改进。
(4)对软件采用数字签名
为了维护自己公司的良好声誉,许多大公司纷纷对自己的软件采用数字签名技术,宣称对自己的软件,尤其是像Java小程序,ActiveX控件这样给WEB服务带来隐患的软件的安全性负责。一些证书机构也开始提供这方面的服务,并且已有了相应的工业标准,如微软公司的Authenticode等。
数字签名是根据公钥算法,用自己的私钥对自己发布的软件进行签名,由用户用其公钥进行验证。这里的公钥是由证书机构发布的证书证实的。
微软的Authenticode技术用于标识一份软件的发布者并且证明它还没有被损害。从证书机构(CA)处获得数字证书的软件发布者可以使用Authenticode签名工具来为他们的软件包进行数字化签名。其证书格式一般遵从ITU-X5.09 V3格式,公钥算法为RSA。Authenticode是客户方软件,它监视ActiveX控件、Cab文件、Java小应用程序或可执行文件的下载,在这些文件中寻找数字证书来进行验证,然后针对可能出现的安全问题向用户显示警字、证书机构的名字及它是商业证书还是个人证书、证书的有效时间等等信息。
数字签名能够保护软件的完整性,对软件在传输过程中的非法更改比较敏感。软件一般来说规模都比较大,而目前的公钥算法,如RSA,在实现上比较慢,因此在对软件进行数字签名时,可先用一个杂凑函数对软件代码进行处理,然后再用用户的私钥对杂凑结果进行签名。当其他用户验证时,也是用同样的杂凑函数算出杂凑值,再对签名进行脱密,如果两个结果一致,则说明软件没有被更改过,否则,就说明软件在传输的过程中被非法更改了。
数字签名还能够确认软件的发布者。软件使用者导入证书机构(CA)发布给软件发布者的证书,就可以用软件发布者的公钥认定发布软件有的有效性。签过名的软件并不能保证没有安全问题,签名的作用在于一旦出现问题,就可以根据证书对软件发布者进行追查。
以上这些解决 WEB 安全性的方法,在具体应用中也不是只使用某一项技术,而是把几种解决方法集成在一起,针对自己的服务器端或客户端的安全需求,构筑起实际的安全屏障。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。