Web容器?中间件?Web服务器?傻傻搞不清,一文
web服务器:
web服务器用于提供http服务,即向客户端返回信息,其可以处理HTTP协议,响应针对静态页面或的请求。通俗的说就是可以挂静态网站,常见的web服务器有Apache、IIS、Nginx。
:
要理解中间件,首先应该了解什么是web应用程序?Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件,有两种模式C/S、B/S。C/S是客户端/服务器端程序,也就是说这类程序一般独立运行。而B/S就是浏览器端/服务器端应用程序,这类应用程序一般借助IE等浏览器来运行。WEB应用程序一般是B/S模式。Web应用程序首先是“应用程序”,和用标准的程序语言,如C、C++等编写出来的程序没有什么本质上的不同。然而Web应用程序又有自己独特的地方,就是它是基于Web的,而不是采用传统方法运行的。换句话说,它是典型的浏览器/服务器架构的产物。
一个Web应用程序是由完成特定任务的各种Web组件(web components)构成的并通过Web将服务展示给外界。在实际应用中,Web应用程序是由多个Servlet、JSP页面、HTML文件以及图像文件等组成。所有这些组件相互协调为用户提供一组完整的服务。
接下来说中间件,其实中间件不是固定的什么东西,只要满足定义功能的都可以说是中间件。中间件漏洞可以说是最容易被web管理员忽视的漏洞,原因很简单,因为这并不是应用程序代码上存在的漏洞,而是属于一种应用部署环境的配置不当或者使用不当造成的。那么从实际情况来看,预防这种漏洞最大的难点,在于中间件安全该由谁负责?
我们在处理应急响应事件时经常遇到这么一种情况,客户网站代码是外包的,也就是第三方公司负责开发,而部署可能是由客户内部运维人员负责。暂不说他们对于中间件安全的重视程度与了解程度,只谈发现漏洞后如何处理,便是一团乱。开发商推卸说这并不是代码上的问题,他们完全是按照安全开发流程(SDL)走的,所以跟他无关;运维人员就一脸蒙蔽了,反驳道:你们当初没跟我说要配置什么啊,只是让我安装个程序就ok了,我怎么知道?
那么除此之外,开发人员以及运维人员对中间件安全意识的缺失也是一个重要因素,有些开发商可能会对自身代码进行安全检测,但只对代码部分进行审查是远远不够的。
重点分析:
web服务器只是提供静态网页解析(如apache),或者提供跳转的这么一种服务。而web中间件或者叫做应用服务器(其包含web容器)可以解析动态语言,比如tomcat可以解析jsp(因为tomcat含有jsp容器),当然它也可以解析静态资源,因此它既是web中间件也是web服务器。不过tomcat解析静态资源的速度不如apache,因此常常两者结合使用。中间件用于提供系统软件和应用软件之间的连接,以便于软件各部件之间的沟通,其可以为一种或多种应用程序提供容器。以web服务器举例。B/S结构需要有web服务器的解析才能运行,这时,web服务器 就是中间件。*.asp只能在windows服务IIS上运行,IIS就是这个B/S结构的中间件。 还有比如小公司,入门级别的服务器,tomcat,jboss(通常与小数据库mysql一起用,Linux上的经典架构LAMP,linux+apache+mysql+php,apache就是中间件,有时也叫), 大型程序服务器(有bean公司的weblogic、IBM的websphere.(一般与Oracle一起)。中间件叫做中间件服务器,也叫作应用服务器。在web中通常把web服务器叫做中间件。
web容器
web容器用于给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,是中间件的一个组成部分,它实现了对动态语言的解析。比如tomcat可以解析jsp,是因为其内部有一个jsp容器。
所属的类别
web服务器:IIS、Apache、nginx、tomcat、weblogic、websphere等。
web中间件:apache tomcat、BEA WebLogic、IBM WebSphere等。
web容器:JSP容器、SERVLET容器、ASP容器等。
注意:web中间件与web服务器是有重叠的,原因在于tomcat等web中间件也具备web服务器的功能。