• 1. 第7章 Web的安全 7.1 Web安全概述 7.1.1 Internet的脆弱性 (1)Internet的无边界性为黑客进行跨国攻击提供了有利的条件,他们足不出户就可以对世界上任何角落的主机进行攻击和破坏。 (2)Internet虚拟的“自由、民主、平等”观念容易使人轻易接受,不同的社会意识形态很容易相互渗透。这些因素为Internet的应用埋下了安全隐患。 (3)Internet没有确定用户真实身份的有效方法,通过IP地址识别和管理网络用户的机制是不可靠的,存在着严重的安全漏洞,容易被欺骗。 (4)Internet是分布式的网络,不存在中央监控管理机制,也没有完善的法律和法规,因此无法对Internet犯罪进行有效地处理。 (5)Internet本身没有审计和记录功能,对发生的事情没有记录,这本身也是一个安全隐患。 (6)Internet从技术上来讲是开放的,是基于可信、友好的前提设计的,是为君子设计而不防小人的。
  • 2. 7.1.2 Web的安全问题 1.影响Web安全的因素 (1)由于Web服务器存在的安全漏洞和复杂性,使得依赖这些服务器的系统经常面临一些无法预测的风险。Web站点的安全问题可能涉及与它相连的内部局域网,如果局域网和广域网相连,还可能影响到广域网上其他的组织。另外,Web站点还经常成为黑客攻击其他站点的跳板。随着Internet的发展,缺乏有效安全机制的Web服务器正面临着成千上万种计算机病毒的威胁。Web使得服务器的安全问题显得更加重要。 (2)Web程序员由于工作失误或者程序设计上的漏洞,也可能造成Web系统的安全缺陷,这些缺陷可能被一些心怀不满的员工、网络间谍或入侵者所利用。因此,在Web脚本程序的设计上,提高网络编程质量,也是提高Web安全性的重要方面。 (3)用户是通过浏览器和Web站点进行交互的,由于浏览器本身的安全漏洞,使得非法用户可以通过浏览器攻击Web站点,这也是需要警惕的一个重要方面。
  • 3. 2.Web中的安全问题 (1)未经授权的存取动作。由于操作系统等方面的漏洞,使得未经授权的用户可以获得Web服务器上的秘密文件和数据,甚至可以对数据进行修改、删除,这是Web站点的一个严重的安全问题。 (2)窃取系统的信息。用户侵入系统内部,获取系统的一些重要信息,并利用这些系统信息,达到进一步攻击系统的目的。 (3)破坏系统。指对网络系统、操作系统、应用进行非法使用,使得他们能够修改或破坏系统。 (4)病毒破坏。目前,Web站点面临着各种各样病毒的威胁,使得本不平静的网络变得更加动荡不安。
  • 4. 1.拒绝服务 2.执行任意命令 3.物理路径泄露 4. 缓冲区溢出 5.条件竞争 6.目录遍历7.2 Web服务器的安全  7.2.1 Web服务器存在的漏洞 
  • 5. 7.2.2 Web服务器的安全配置 1.Windows2000 Server下Web服务器的安全配置 (1)目录规划与安装   安装前要对Web目录进行规划,系统文件和应用文件要分别放在不同的分区上,而且不要以默认的方式安装;在安装的过程中系统文件不要安装在安装时显示的默认路径上。由于IIS存在许多漏洞,容易受到黑客的攻击,所以不要把IIS安装到(主)域控制器上。 (2)用户控制 对于普通用户来讲其安全性可以通过相应的“安全策略”来加强对他们的管理,约束其属性和行为。值得注意的是在IIS安装完以后会自动生成一个匿名账号IUSE_Computername,而匿名访问Web服务器应该被禁止的,否则会带来一定的安全隐患。禁止的方法:    启动“Internet服务管理器”,在Web站点属性页的“目录安全性”选项卡中单击“匿名访问和验证”,然后单击“编辑(E)”按钮打开“验证方法”对话框,如图所示。在该对话框中去掉“匿名访问”前的对号即可。
  • 6. (3)登录认证 IIS服务器提供了匿名访问、基本验证和集成Windows验证三种登录方式。其中匿名访问是被禁止的。在实际应用中,用户可以根据不同的安全需求选择不同的IIS登录认证方式。 (4)访问权限控制 1)NTFS文件系统的访问控制 Web服务应建立在NTFS格式之上,一方面可以容易实现其访问权限的控制,对不同的用户和组授予不同的访问权限;另一方面还可以有效利用NTFS文件系统的审核功能,如图所示。
  • 7. 2)Web目录的访问权限控制 对Web目录的文件夹,可以通过操作Web站点属性页实现对Web目录访问权限的控制,而该目录下的所有文件和文件夹都将继承这些安全性设置。在“Internet服务管理器”中,打开“Web站点”的属性对话框,如图所示。Web服务除了提供NTFS权限外,还提供读取权限和执行权限。读取权限允许用户读取或下载Web目录中的文件,执行权限允许用户运行Web目录中的程序和脚本。
  • 8. (5)IP地址控制    IIS可以设置允许或拒绝从特定IP地址发来的服务请求,有选择地允许特定节点的用户访问Web服务。在Web站点属性页的“目录安全性”选项卡中单击“IP地址及域名限制”中的“编辑(I)”按钮打开如图所示的“IP地址及域名限制”对话框,即可对限制的情况进行设置。
  • 9. (6)端口控制    对于IIS服务来讲,无论是Web服务、FTP服务,还是SMTP服务,都有各自的TCP端口号用来监听和接收用户浏览器发出的请求。在实际应用中可以通过修改默认端口号的方法来提高IIS服务器的安全性。如修改Web站点TCP端口号的方法为:如图7-5所示,打开默认Web站点的属性对话框,可以直接把“TCP端口(T)”选项后面的输入框中的内容“80”改为其它的数值。 (7)安全通信机制     IIS身份认证方式除了匿名用户、基本验证、集成Windows验证以外,还有一种安全性更高的认证方式——数字证书。在“目录安全性”对话框中单击“服务器证书”按钮,按向导提示就可以很容易地申请到数字证书。
  • 10. 2.Linux下Web服务器的安全配置 (1)Apache 服务器的安全特性  1)采用自主访问控制和强制性访问控制的安全策略  2)Apache 的安全模块 (2) Apache服务器的安全配置  1)设置服务器的访问控制策略  2)规范使用用户和组  3)Apache服务器的密码保护  4)让Apache服务器在监牢中运行  5)使用SSL加固Apache  6)Apache服务器防范DoS  7)减少CGI和SSI风险  8)建立安全的目录结构  9)设置目录访问策略  10)记录所有情况
  • 11. 7.3 Web客户端的安全  7.3.1 浏览器本身的漏洞  1.传播病毒类漏洞  2.木马类漏洞 3.DoS类漏洞 4.“跳板”类漏洞 5.欺骗类漏洞 6.用户信息泄露类漏洞
  • 12.   1.什么是ActiveX    ActiveX是Microsoft对于一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型(COM)。在有目录和其它支持的网络中,COM变成了分布式COM(DCOM)。ActiveX与具体的编程语言无关,作为针对Internet应用开发的技术,ActiveX被广泛应用于Web服务器以及客户端的各个方面。同时,ActiveX技术也被用于方便地创建普通的桌面应用程序。 7.3.2 ActiveX的安全性
  • 13.   2. ActiveX控件的安全问题 IE浏览器通常应用安全级别和认证两种策略来保证ActiveX插件的安全。    (1)ActiveX控件通过数字签名来进行认证,浏览器可以拒绝未被正确签名的ActiveX控件。Microsoft采用鉴别码认证技术对ActiveX控件进行签名,可以让用户验证ActiveX控件作者的身份,并核实是否有人篡改过这个控件。 (2)IE的安全级别可分为“默认级别”和“自定义级别”两种。     IE的“自定义级别”为用户提供自主选择与实际需求相匹配安全策略的机会。而“默认级别”又分为高、中、中低、低四级。它们属性的特点如表7-1所示。ActiveX控件实际的默认级别为“中”,即软件安装之前,用户可以根据自己对软件发行商和软件本身的信任程度,选择决定是否继续安装和运行此软件。
  • 14. 3. IE浏览器中Activex控件的设置 (1)启动IE浏览器,点选菜单\工具\Internet选项,选择“安全”选项卡,如图所示.
  • 15. (2)在选择区内请选择“Internet” 图标;然后点击下面的“自定义级别”按钮,如图所示。
  • 16. 1.什么是cookie     Cookie是由Netscape开发并将其作为持续保存状态信息和其他信息的一种方式。Cookie是当用户通过浏览器访问Web服务器时,由Web服务器发送的、保存在Web客户端的简单的文本文件,约由255个字符组成,占4KB空间。当用户正在浏览站点时,它存储于客户机的RAM中;退出浏览器后,它存储于客户机的硬盘上。这个文件与特定的Web文档关联在一起,保存了该客户机访问这个Web文档时的信息。浏览器通过这些特定的信息,为以后访问Web服务器,为进一步交互提供方便。 7.3.3 Cookie的安全性 
  • 17. 2.Cookie的功能 (1)定制个性化空间     用户访问一个站点,可能由于费用、带宽限制等原因,并不希望浏览网页所有的内容。Cookie可根据个人喜好进行栏目设定,即时、动态地产生用户所要的内容,这就迎合了不同层次用户的访问兴趣,减少用户项目选择的次数,更合理利用网页服务器的传输带宽。 (2)记录站点轨迹 由于Cookie可以保存在客户机上,并在用户再次访问该Web服务器时读回,这一特性可以帮助我们实现很多设计功能,如显示用户访问该网页的次数、上一次的访问时间、记录用户以前在本页中所做的选择等等。
  • 18.   3.Cookie的安全性 4.Cookie的安全设置 (1)IE5.0的设置方法 (2)IE6.0的设置方法 1)单击浏览器“工具”菜单,选择“internet选项(O)…”进入。 2)单击“隐私”标签。 3)拖动设置滑块,将隐私设置调整到“中”的等级,设置好后单击“高级”,选中“覆盖自动Cookie处理”和“总是允许会话cookie”复选框。
  • 19. 7.4 脚本语言的安全性 7.4.1  CGI的安全性 1.什么是CGI   在物理上,CGI(Common Gate Intergace)是一段程序,它运行在Server上,提供同客户端 Html页面的接口。CGI是一种共用网关接口,称之为一种机制更为合适。因此用户可以使用前面提到的不同脚本语言来编写适合的CGI程序。将已经写好的程序放在Web服务器的计算机上运行,再将其运行结果通过Web服务器传输到客户端的浏览器上。
  • 20. 2. CGI安全问题 在计算机领域,尤其在Internet上,尽管大部分Web服务器所编的程序都尽可能保护自己的内容不受侵害,但只要CGI脚本中有一点安全方面的失误——口令文件、私有数据、以及任何东西,就能使入侵者能访问计算机。遵循一些简单的规则并保持警惕能使自己的CGI脚本免受侵害,从而可以保护自己的权益。这里所说的CGI安全,主要包括两个方面,一是Web服务器的安全,一是CGI语言的安全。 一般来说,CGI问题主要有以下几类: (1)暴露敏感或不敏感信息。 (2)缺省提供的某些正常服务未关闭。 (3)利用某些服务漏洞执行命令。 (4)应用程序存在远程溢出。  (5)非通用CGI程序的编程漏洞。
  • 21. 3.CGI的漏洞 (1)配置错误 (2)边界条件错误 (3)访问验证错误 (4)来源验证错误 (5)输入验证错误 (6)意外情况处理失败 (7)策略错误 (8)习惯问题
  • 22. 7.4.2  ASP.NET的安全性 1.ASP.NET的常见漏洞 (1)不良配置控制带来的信息泄漏 (2)ASP.NET虚拟主机安全漏洞 (3)SQL语句漏洞 (4)ASP.NET请求确认NULL字节漏洞 (5)跨站脚本漏洞(CSS)
  • 23. 2.ASP.NET安全性的工作原理 (1)ASP.NET 安全结构
  • 24. (2)ASP.NET 安全数据流  1)模拟 模拟方案依赖于IIS身份验证和 Microsoft Windows 文件访问安全性以最大限度地减少 ASP.NET 应用程序本身在安全性方面的编程量。数据流如图7-13所示。
  • 25. (本页无文本内容)
  • 26. 2)验证 在 Forms 身份验证方案中,应用程序直接从用户那里收集名字和密码等凭据,并自己判断这些信息的真实性。应用程序不使用 IIS 身份验证,但 IIS 身份验证设置可以影响 Forms 身份验证。作为一项原则,当使用 Forms 身份验证时,请在 IIS 中启用匿名访问。否则,如果用户未通过 IIS 身份验证,他们甚至无法访问应用程序以便向 Forms 身份验证提供用户名和密码。
  • 27. (本页无文本内容)
  • 28. (3)ASP.NET 身份验证  1)Windows 身份验证提供程序  在 ASP.NET 应用程序中,Windows 身份验证将IIS所提供的用户标识视为已经过身份验证的用户。IIS 提供了大量用于验证用户标识的身份验证机制,其中包括匿名身份验证、Windows 集成的(NTLM) 身份验证、Windows 集成的 (Kerberos) 身份验证、基本(Base64 编码)身份验证、摘要式身份验证以及基于客户端证书的身份验证。 在 ASP.NET 中,使用 WindowsAuthenticationModule 模块来实现 Windows 身份验证。该模块根据 IIS 所提供的凭据构造一个 WindowsIdentity,并将该标识设置为该应用程序的当前 User 属性值。 Windows 身份验证是 ASP.NET 应用程序的默认身份验证机制,并指定作为使用 authentication 配置元素的应用程序的身份验证模式。
  • 29. 2)Forms 身份验证提供程序     通过 Forms 身份验证,可以使用所创建的登录窗体验证用户的用户名和密码。未经过身份验证的请求被重定向到登录页,用户在该页上提供凭据和提交窗体。如果应用程序对请求进行了验证,系统会颁发一个票证,该票证包含用于重建后续请求的标识的密钥。 3)Passport 身份验证提供程序    Passport 身份验证是由 Microsoft 提供的集中身份验证服务,该服务为成员站点提供单一登录和核心配置文件服务。Passport 之所以让用户受益匪浅,原因在于用户不必登录访问受到限制的新资源或站点。如果希望站点与 Passport 身份验证及授权兼容,则应该使用该提供程序。     Passport 是基于 Cookie 的身份验证服务,使用“三重 DES”加密方案。当成员站点注册到 Passport 服务时,将被授予站点特定的密钥。Passport 登录服务器使用该密钥对站点间传递的查询字符串进行加密和解密。
  • 30. (4)ASP.NET 授权  授权决定了是否应授予某个标识对特定资源的访问权限。在 ASP.NET 中,有两种方式来授予对给定资源的访问权限:    1)文件授权。文件授权由 FileAuthorizationModule 执行。它检查 .aspx 或 .asmx 处理程序文件的访问控制列表 (ACL) 以确定用户是否应该具有对文件的访问权限。ACL 权限用于验证用户的 Windows 标识(如果已启用 Windows 身份验证)或 ASP.NET 进程的 Windows 标识。     2)URL 授权。URL 授权由 UrlAuthorizationModule 执行,它将用户和角色映射到 ASP.NET 应用程序中的 URL。这个模块可用于有选择地允许或拒绝特定用户或角色对应用程序的任意部分(通常为目录)的访问权限。
  • 31. (5)ASP.NET 模拟     使用模拟时,ASP.NET 应用程序可以用发出请求的用户的 Windows 标识(用户帐户)执行。模拟通常用于依赖 Microsoft Internet 信息服务 (IIS) 来对用户进行身份验证的应用程序。    默认情况下禁用 ASP.NET 模拟。如果对某 ASP.NET 应用程序启用了模拟,该应用程序将运行在标识上下文中,其访问标记被 IIS 传递给 ASP.NET。该标记既可以是已通过身份验证的用户标记(如已登录的 Windows 用户的标记),也可以是 IIS 为匿名用户提供的标记(通常为 IUSR_MACHINENAME 标识)。     当启用模拟时,只有应用程序代码运行在被模拟的用户的上下文中。将使用 ASP.NET 进程的标识编译应用程序和加载配置信息。编译的应用程序将放在 Temporary ASP.NET files 目录中。所模拟的应用程序标识需要对该目录的读/写访问权限。所模拟的应用程序标识还需要至少对应用程序目录和子目录中的文件的读访问权限。