Web安全(上) Web架构分析

一、 Web安全不仅仅是互联网才需要

Web服务是指采用B/S架构、通过Http协议提供服务的统称,这种结构也称为Web架构,随着Web2.0的发展,出现了数据与服务处理分离、服务与数据分布式等变化,其交互性能也大大增强,也有人叫B/S/D三层结构。互联网能够快速流行得益于Web部署上的简单,开发上简便,Web网页的开发大军迅速超过了以往任何计算机语言的爱好者,普及带来了应用上繁荣。J2EE与.NET的殊途同归,为Web流行扫清了厂家与标准的差异;众望所归,SOA选中Web2.0作为其实现的基本工具之一(使用最广的),Web架构从互联网走进了企业内部网络,新业务系统的开发,越来越多的系统架构师选择了Web架构,与熟悉它的人如此广泛是分不开的。事实再一次证明了那个经典的理论:简洁的最容易流行。

简单与安全好象总有些“矛盾”,浏览器可以直接看到页面的Html代码,早期的Web服务设计没有过多的安全考虑,人性本善,技术人员总是相信人都是善良的!但随着Web2.0的广泛使用,Web服务不再只是信息发布,游戏中的装备交易、日常生活中网上购物、政府行政审批、企业资源管理…信息价值的诱惑,人的贪婪开始显现,不是所有的人都有Web设计者的“大同”思想,安全问题日显突出了。

2008年网络安全事件统计最多是:SQL注入与“网页挂马(木马)”。因为这是“僵尸”网络发展新“会员”的基本工具,而僵尸网络的经济与政治“价值”,这里就不用说了。SQL注入与“网页挂马”主要就是针对Web服务的,传统的安全产品(UTM/IPS)都有些力不从心。

互联网是个人思想展现的乐园,也是世界级的、虚拟的“另一个”社会,既然大家都是虚拟的、带着面具的,要变成现实社会中的真实利益,还需要一些转换才可以兑现,但SOA把Web架构带入企业内部网络,这里的网络世界是“真实的”,利益是可以直接兑现的,Web安全问题变得刻不容缓。

二、 Web架构原理

要保护Web服务,先要了解Web系统架构,下图是Web服务的一般性结构图,适用于互联网上的网站,也适用于企业内网上的Web应用架构:

本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Network/Security/

用户使用通用的Web浏览器,通过接入网络(网站的接入则是互联网)连接到Web服务器上。用户发出请求,服务器根据请求的URL的地址连接,找到对应的网页文件,发送给用户,两者对话的“官方语言”是Http。网页文件是用文本描述的,HTML/Xml格式,在用户浏览器中有个解释器,把这些文本描述的页面恢复成图文并茂、有声有影的可视页面。

通常情况下,用户要访问的页面都存在Web服务器的某个固定目录下,是一些.html或.xml文件,用户通过页面上的“超连接”(其实就是URL地址)可以在网站页面之间“跳跃”,这就是静态的网页。后来人们觉得这种方式只能单向地给用户展示信息,信息发布还可以,但让用户做一些比如身份认证、投票选举之类的事情就比较麻烦,由此产生了动态网页的概念;所谓动态就是利用flash、Php、asp、Java等技术在网页中嵌入一些可运行的“小程序”,用户浏览器在解释页面时,看到这些小程序就启动运行它。小程序的用法很灵活,可以展示一段动画(如Flash),也可以在你的PC上生成一个文件,或者接收你输入的一段信息,这样就可以根据你的“想法”,对页面进行定制处理,让你每次来到时,看到的是你上次设计好的特有风格,“贵宾的感觉”是每个人都喜欢的,更何况虚拟的网络世界中,你不认识的人还对你如此“敬仰”,服务得如此体贴…

“小程序”的使用让Web服务模式有了“双向交流”的能力,Web服务模式也可以象传统软件一样进行各种事务处理,如编辑文件、利息计算、提交表格等,Web架构的适用面大大扩展,Web2.0可以成为SOA架构的实现技术之一,这个“小程序”是功不可没的。

这些“小程序”可以嵌入在页面中,也可以以文件的形式单独存放在Web服务器的目录里,如.asp、.php、jsp文件等,并且可以在开发时指定是在用户端运行,还是在服务器端运行;用户不再能看到这些小程序的源代码,服务的安全性也大大提高。这样功能性的小程序越来越多,形成常用的工具包,单独管理,Web业务开发时,直接使用就可以了,这就是中间件服务器,它实际上是Web服务器处理能力的扩展。

静态网页与“小程序”都是事前设计好的,一般不经常改动,但网站上很多内容需要经常的更新,如新闻、博客文章、互动游戏等,这些变动的数据放在静态的程序中显然不适合,传统的办法是数据与程序分离,采用专业的数据库。Web开发者在Web服务器后边增加了一个数据库服务器,这些经常变化的数据存进数据库,可以随时更新。当用户请求页面时,“小程序”根据用户要求的页面,涉及到动态数据的地方,利用SQL数据库语言,从数据库中读取最新的数据,生成“完整”页面,最后送给用户,如股市行情曲线,就是由一个不断刷新的小程序控制。

除了应用数据需要变化,用户的一些状态信息、属性信息也需要临时记录(因为每个用户都是不同的),而Web服务器本来是不记录这些信息的,只管答复你的要求,“人一走茶就凉了”。后来Web技术为了“友好”互动,需要“记住”用户的访问信息,建立了一些“新”的通讯机制:

Cookie:把一些用户的参数,如帐户名、口令等信息存放在客户端的硬盘临时文件中,用户再次访问这个网站时,参数也一同送给服务器,服务器就知道你就是上次来的那个“家伙”了

Session:把用户的一些参数信息存在服务器的内存中,或写在服务器的硬盘文件中,用户是不可见的,这样用户用不同电脑访问时的贵宾待遇就同样了,Web服务器总能记住你的“样子”,一般情况下,Cookie与Session可以结合使用

Cookie在用户端,一般采用加密方式存放就可以了;Session在服务器端,信息集中,被篡改问题将很严重,所以一般放在内存里管理,尽量不存放在硬盘上。

到此,我们清楚了,Web服务器上有两种服务用数据要保证“清白”,需要你重点保护的。一是页面文件(.html、.xml等),这里包括动态程序文件(.php、.asp、.jsp等),一般存在Web服务器的特定目录中,或是中间件服务器上;二是后台的数据库,如Oracle、SQL Server等,其中存放的数据的动态网页生成时需要的,也有业务管理数据、经营数据。

还有一个问题应该提一下,就是浏览器给用户电脑带来的安全问题,因为Web可以对本地的进程、硬盘操作,可以把木马、病毒放到你的电脑上来,Web架构中使用“沙漏”技术提供安全保护,就是限制页面中“小程序”的本地读写权限,但限制毕竟不能不让其“工作”,所以多数情况下在写入时给出提示,让你自己选择,大家经常看见有进程在安装程序进入你的电脑,但绝大多数人分不清是否应该,要么一概不许,造成很多事情做不了(很多下载与游戏就只能看着),要么“大胆”接受,大门敞开,听天由命。这里主要分析服务器端的安全,客户端的安全再行考虑。

三、Web架构中的安全点分析

从Web架构上可以看出,Web服务器是必经的大门,进了大门,还有很多服务器需要保护,如中间件服务器、数据库服务器等。我们这里不考虑网络内部人员的攻击,只考虑从接入网(或互联网)来的攻击,入侵者入侵的通道有下面几个:

1、服务器系统漏洞:Web服务器毕竟的一个通用的服务器,无论是Windows,还是Linux/Unix,都不可少的带有系统自身的漏洞,通过这些漏洞入侵,可以获得服务器的高级权限,当然对服务器上运行的Web服务就可以随意控制了。除了OS的漏洞,还有Web服务软件的漏洞,IIS也好,Tomcat也好,同样需要不断地打补丁。

2、Web服务应用漏洞:如果说系统级的软件漏洞被关注的人太多了,那么Web应用软件的漏洞数量上就更多了,因为Web服务开发简单,开发的团队参差不齐,并非都是“专业”的高手,编程不规范、安全意识不强、因为开发时间紧张而简化测试等,应用程序的漏洞也同样可以让入侵者来去自如。最为常见的SQL注入,就是因为大多应用编程过程中产生的漏洞。

3、密码暴力破解:漏洞会招来攻击容易理解,但毕竟需要高超的技术水平,破解密码却十分有效,而且简单易行。一般来说帐号信息容易获得,剩下的就是猜测密码了,由于使用复杂密码是件麻烦而又“讨厌”的事,设置容易记忆的密码,是绝大多数用户的选择。大多Web服务是靠“帐号+密码”的方式管理用户帐户,一旦破解密码,尤其是远程管理者的密码,破坏程度难以想象,并且其攻击难度比通过漏洞方式要简单的多,而且不容易被发觉。在知名的网络经济案例中,通过密码入侵的占了接近一半的比例。

入侵者进入Web系统,其动作行为目的性是十分明确的:

让网站瘫痪:网站瘫痪是让服务中断。使用DDOS攻击都可以让网站瘫痪,但对Web服务内部没有损害,而网络入侵,可以删除文件、停止进程,让Web服务器彻底无法恢复。一般来说,这种做法是索要金钱或恶意竞争的要挟,也可能是显示他的技术高超,拿你的网站被攻击作为宣传他的工具。

篡改网页:修改网站的页面显示,是相对比较容易的,也是公众容易知道的攻击效果,对于攻击者来说,没有什么“实惠”好处,主要是炫耀自己,当然对于政府等网站,形象问题是很严重的。

挂木马:这种入侵对网站不产生产生直接破坏,而是对访问网站的用户进行攻击,挂木马的最大“实惠”是收集僵尸网络的“肉鸡”,一个知名网站的首页传播木马的速度是爆炸式的。挂木马容易被网站管理者发觉,XSS(跨站攻击)是新的倾向。

篡改数据:这是最危险的攻击者,篡改网站数据库,或者是动态页面的控制程序,表面上没有什么变化,很不容易发觉,是最常见的经济利益入侵。数据篡改的危害是难以估量的,比如:购物网站可以修改你帐号金额或交易记录,政府审批网站可以修改行政审批结果,企业ERP可以修改销售定单或成交价格…

     有人说采用加密协议可以防止入侵,如https协议,这种说法是不准确的。首先Web服务是面向大众的,不可以完全使用加密方式,在企业内部的Web服务上可以采用,甚至可以采用黑白名单,但大家都是“内部人员”,加密方式是共知的;其次,加密可以防止别人“窃听”,但不能防止冒充;再者,“中间人劫持”同样可以窃听加密的通讯。

本文出自 “Jack zhai” 博客,请务必保留此出处http://zhaisj.blog.51cto.com/219066/157431

时间: 2024-11-08 22:18:42

Web安全(上) Web架构分析的相关文章

Web搜索引擎设计和实现分析

---- 一.引言 ---- 随着Internet的飞速发展,人们越来越依靠网络来查找他们所需要的信息,但是,由于网上的信息源多不胜数,也就是我们经常所说的"Rich Data, Poor Information".所以如何有效的去发现我们所需要的信息,就成了一个很关键的问题.为了解决这个问题,搜索引擎就随之诞生. ---- 现在在网上的搜索引擎也已经有很多,比较著名的有AltaVista, Yahoo, InfoSeek, Metacrawler, SavvySearch等等.国内也

iis Web站点崩溃的原因分析_服务器

有许多种原因可能导致Web站点无法正常工作,这使得系统地检查所有问题变得很困难.下面将集中分析总结导致Web站点崩溃的最常见的问题.如果可以解决这些常规问题,那么也将有能力对付出现的一些意外情况.  磁盘已满  导致系统无法正常运行的最可能的原因是磁盘已满.一个好的网络管理员会密切关注磁盘的使用情况,隔一定的时间,就需要将磁盘上的一些负载转存到备份存储介质中(例如磁带). 日志文件会很快用光所有的磁盘空间.Web服务器的日志文件.SQL*Net的日志文件.JDBC日志文件,以及应用程序服务器日志

如何在Web页面上直接打开、编辑、创建Office文档

web|创建|页面 有朋友询问如何在Web页面上做到像SharePoint中的效果一样,能直接激活客户端的Word来打开.doc文件,而不是类似直接点击.doc文档链接时Word在IE中被打开那样.想想这个问题应该很多人都会感兴趣,所以干脆写一篇blog来大致描述一下方法. 在安装Office2003以后,有一个ActiveX控件被安装到了系统中,这个控件位于"Program Files\Microsoft Office\OFFICE11\owssupp.dll".通过这个控件,客户端

把当前web页面上的所有图片复制到特定目录

web|页面  把当前web页面上的所有图片复制到特定目录,比如C:\imgs\ 转载请注明:作者:糯米糊糊(huyoo353),来源:http://blog.csdn.net/huyoo/ MoreQuick回复: thank,我也不是很精通这方面,不过插件可以用vbscript写的 麻烦你贴代码到论坛上,看是否有人会 thanks! -- Previous Private Message -- Sent by : edward Sent : 2005-03-18 at 7:53pm More

用ASP技术实现在WEB网页上浏览目录及文件

web|网页 用ASP技术实现在WEB网页上浏览目录及文件 周仰平 摘要  目前在许多单位里,象WORD.EXCEL或WPS该类文档文件已成为重要的数据信息资源,在INTRANET WEB平台上如何高效率地管理这些信息资源是一个需要解决的问题.本文是利用ASP技术开发一个基于WEB的应用程序,实现在WEB页面上浏览目录文件,很轻易地做到诸如WORD.EXCEL和WPS等文档文件的查阅和下载,大大地减少信息维护的工作量. 关键词  ASP  WEB  文档文件   前言:在INTRANET平台上,

通过Web Services上传和下载文件

services|web|上传|下载 随着Internet技术的发展和跨平台需求的日益增加,Web Services的应用越来越广,我们不但需要通过Web Services传递字符串信息,而且需要传递二进制文件信息.下面,我们就分别介绍如何通过Web Services从服务器下载文件到客户端和从客户端通过Web Services上载文件到服务器. 一:通过Web Services显示和下载文件 我们这里建立的Web Services的名称为GetBinaryFile,提供两个公共方法:分别是Ge

WEB打印的相关技术分析

web|web打印 WEB打印的相关技术分析 现有的Web打印控制技术分成几种方案 自定义控件完成打印 利用IE自带的WebBrowser控件实现打印 利用第三方控件实现打印 以下主要谈前两个方面的内容 一. 自定义控件方式 自定义控件方式就是利用VB或VC等工具生成COM组件,用定义好的打印格式来分析打印源文件从而实现打印.只有将生成的组件下载并注册到客户机上,才能实现在客户端的打印. 难点主要是定义打印格式.如何来分析打印源文件.现有的比较好的方法是利用XML技术来全面的解决问题,利用XML

用VB将第三方控件打成CAB包(在WEB页面上使用)

web|控件|页面 用VB将第三方控件打成CAB包(在WEB页面上使用)由于工作的需要,笔者需要在WEB页面上显示CAD文件(在客户机器上不装CAD).由于时间紧迫,现写控件根本来不及,没办法在网上搜寻了一圈.找到了一个软件,大小大概有8兆左右.可以用来浏览DWG类型的文件.用了一下,发现其用的是一个DLL类型的控件,并带有两个附属的DLL文件. 如果要在WEB页面上使用控件,则控件需要打成CAB类型的包.上网找了一个打CAB包的工具,名字叫IExpress.不过如果用这个工具打包需要手工编写I

由于Web服务器上的“ISAPI 和 CGI 限制”列表设置

Win7的IIS配置asp.net出现"由于 Web 服务器上的"ISAPI 和 CGI 限制"列表设置,无法提供您请求的页面." 点击,[应用程序池]上面的IIS根目录,然后选择右边的[ISAPI 和 CGI 限制设置],最后,所有选项都设置成启动就行了! 作者:csdn博客 贝壳 返回栏目页:http://www.bianceng.cnhttp://www.bianceng.cn/Servers/web/