当前位置:首页 » 网站技术 » ASP

维护 ASP 应用程序的安全 [1]

...


  千万不要轻视正确配置安全设置的重要性。如果不正确配置安全设置,不但会使您的 ASP应用程序遭受不必要的篡改,而且会妨碍正当用户访问您的 .asp文件。

  Web服务器提供了各种方法来保护您的 ASP应用程序免受未授权的访问和篡改。在您读完本主题下的安全信息之后,请花一定的时间仔细检查一下您的 Windows NT和 Web服务器安全性文档。详细信息,请参阅安全性。

NTFS权限
  您可以通过为单独的文件和目录应用 NTFS访问权限来保护 ASP应用程序文件。NTFS权限是 Web服务器安全性的基础,它定义了一个或一组用户访问文件和目录的不同级别。当拥有 Windows NT有效帐号的用户试图访问一个有权限限制的文件时,计算机将检查文件的访问控制表 (ACL)。该表定义了不同用户和用户组所被赋予的权限。如果用户的帐号具有打开文件的权限,计算机则允许该用户访问文件。例如,Web服务器上的 Web应用程序的所有者需要有“更改”权限来查看、更改和删除应用程序的 .asp文件。但是,访问该应用程序的公共用户应仅被授予“只读”权限,以便将其限制为只能查看而不能更改应用程序的 Web页。

维护 Global.asa的安全
  为了充分保护 ASP应用程序,一定要在应用程序的 Global.asa文件上为适当的用户或用户组设置 NTFS文件权限。如果 Global.asa包含向浏览器返回信息的命令而您没有保护 Global.asa文件,则信息将被返回给浏览器,即便应用程序的其他文件被保护。

  有关配置 NTFS权限的详细信息,请参阅访问控制。

  注意一定要对应用程序的文件应用统一的 NTFS权限。例如,如果您不小心过度限制了一应用程序需要包含的文件的 NTFS权限,则用户可能无法查看或运行该应用程序。为了防止此类问题,在为您的应用程序分配 NTFS权限之前应仔细计划。

Web服务器权限
  您可以通过配置您的 Web服务器的权限来限制所有用户查看、运行和操作您的 ASP页的方式。不同于 NTFS权限提供的控制特定用户对应用程序文件和目录的访问方式, Web服务器权限应用于所有用户,并且不区分用户帐号的类型。

  对于要运行您的 ASP应用程序的用户,在设置 Web服务器权限时,必须遵循下列原则:

  对包含 .asp文件的虚拟目录允许“读”或“脚本”权限。

  对 .asp文件和其他包含脚本的文件(如 .htm文件等)所在的虚目录允许“读”和“脚本”权限。

  对包含 .asp文件和其他需要“执行”权限才能运行的文件(如 .exe和 .dll文件等)的虚目录允许“读”和“执行”权限。

  有关配置 Web服务器权限的详细信息,请参阅访问控制。

脚本映射文件
  应用程序的脚本映射保证了 Web服务器不会意外地下载 .asp文件的源代码。例如,即使您为包含了某个 .asp文件的目录设置了“读”权限,只要该 .asp文件隶属于某个脚本映射应用程序,那么您的 Web服务器就不会将该文件的源代码返回给用户。

Cookie安全性
  ASP使用 SessionID cookie跟踪应用程序访问或会话期间特定的 Web浏览器的信息。这就是说,带有相应的 cookie的 HTTP请求被认为是来自同一 Web浏览器。Web服务器可以使用 SessionID cookies配置带有用户特定会话信息的 ASP应用程序。例如,如果您的应用程序是一个允许用户选择和购买 CD唱盘的联机音乐商店,就可以用 SessionID跟踪用户漫游整个应用程序时的选择。

SessionID能否被黑客猜中?
  为了防止计算机黑客猜中 SessionID cookie并获得对合法用户的会话变量的访问,Web服务器为每个 SessionID指派一个随机生成号码。每当用户的 Web浏览器返回一个 SessionID cookie时,服务器取出 SessionID和被赋予的数字,接着检查是否与存储在服务器上的生成号码一致。若两个号码一致,将允许用户访问会话变量。这一技术的有效性在于被赋予的数字的长度(64位),此长度使计算机黑客猜中 SessionID从而窃取用户的活动会话的可能性几乎为 0。

加密重要的 SessionID Cookie
  截获了用户 sessionID cookie的计算机黑客可以使用此 cookie假冒该用户。如果 ASP应用程序包含私人信息,信用卡或银行帐户号码,拥有窃取的 cookie的计算机黑客就可以在应用程序中开始一个活动会话并获取这些信息。您可以通过对您的 Web服务器和用户的浏览器间的通讯链路加密来防止 SessionID cookie被截获。有关加密的详细信息,请参阅安全性。


使用身份验证机制保护被限制的 ASP内容
  您可以要求每个试图访问被限制的 ASP内容的用户必须要有有效的 Windows NT帐号的用户名和密码。每当用户试图访问被限制的内容时,Web服务器将进行身份验证,即确认用户身份,以检查用户是否拥有有效的 Windows NT帐号。

  Web服务器支持以下几种身份验证方式:

  基本身份验证提示用户输入用户名和密码。

  Windows NT请求/响应式身份验证从用户的 Web浏览器通过加密方式获取用户身份信息。

  然而,Web服务器仅当禁止匿名访问或 Windows NT文件系统的权限限制匿名访问时才验证用户身份。详细信息,请参阅关于身份验证。

保护元数据库
  访问元数据库的 ASP脚本需要 Web服务器所运行的计算机的管理员权限。在从远程计算机上运行这些脚本时,须经已通过身份验证的连接,如使用 Windows NT请求/响应验证方式进行连接。应该为管理级 .asp文件创建一个服务器或目录并将其目录安全验证方式设置为 Windows NT请求/响应式身份验证。目前,仅 Microsoft Internet Explorer version 2.0或更高版本支持 Windows NT请求/响应式身份验证。

使用 SSL维护应用程序的安全
  Secure Sockets Layer (SSL) 3.0协议作为 Web服务器安全特性,提供了一种安全的虚拟透明方式来建立与用户的加密通讯连接。SSL保证了 Web内容的验证,并能可靠地确认访问被限制的 Web站点的用户的身份。

  通过 SSL,您可以要求试图访问被限制的 ASP应用程序的用户与您的服务器建立一个加密连接;以防用户与应用程序间交换的重要信息被截取。详细信息,请参阅加密。

维护包含文件的安全
  如果您从位于没有保护的虚拟根目录中的 .asp文件中包含了位于启用了 SSL的目录中的文件,则 SSL将不被应用于被包含文件。因此,为了保证应用 SSL,应确保包含及被包含的文件都位于启用了 SSL的目录中。

客户资格认证
  控制对您的 ASP应用程序访问的一种十分安全的方法是要求用户使用客户资格登录。客户资格是包含用户身份信息的数字身份证,它的作用与传统的诸如护照或驾驶执照等身份证明相同。用户通常从委托的第三方组织获得客户资格,第三方组织在发放资格证之前确认用户的身份信息。(通常,这类组织要求姓名、地址、电话号码及所在组织名称;此类信息的详细程度随给予的身份等级而异。)

  每当用户试图登录到需要资格验证的应用程序时,用户的 Web浏览器会自动向服务器发送用户资格。如果 Web服务器的 Secure Sockets Layer (SSL)资格映射特性配置正确,那么服务器就可以在许可用户对 ASP应用程序访问之前对其身份进行确认。

用于处理资格证明的 ASP脚本
  作为 ASP应用程序开发人员,您可以编写脚本来检查资格是否存在并读取资格字段。例如,您可以从资格证明中访问用户名字段和公司名字段。Active Server Pages在 Request对象的 ClientCertificate集合中保存资格信息。详细信息,请参阅 ASP内建对象。

  必须将 Web服务器配置为接受或需要客户资格,然后才能通过 ASP处理客户资格;否则,ClientCertificate集合将为空。

创建事务性脚本
  商业应用程序常常需要具有在事务内部运行脚本和组件的能力。事务是一种服务器操作,即使该操作包括很多步骤(例如,定货、查看存货、付帐等),也只能整体返回操作是成功还是失败。用户可以创建在事务内部运行的 ASP脚本,如果脚本的任何一部分失败,整个事务都将会终止。

  ASP事务处理是以 Microsoft? Transaction Server (MTS)为基础的。Microsoft? Transaction Server (MTS)是一个事务处理系统,用于开发、配置和管理高性能、可分级的、有鲁棒性的企业 Internet和 Intranet服务器应用程序。Transaction Server为开发分布式的,基于组件的应用程序提供了一个应用程序设计模型。它也为配置和管理这些应用程序提供了一个运行环境。

  创建事务性脚本的功能内置在 Internet Information Server和 Personal Web Server中。如果您安装了 Microsoft Transaction Server,就可以将组件打包,以使组件在事务内部运行。有关组件打包的详细信息,请参阅创建 MTS包。

关于事务
  事务是整体成功或失败的操作。事务处理用于对数据库进行可靠地更新。在对数据库进行许多相关更改或同时更新多个数据库时,要保证所有更改都被正确执行。如果这些更改中的任何一个失败,都需要恢复数据库表的原始状态。

  如果没有 MTS,您就需要编写脚本和组件,手工跟踪请求的更改情况,以便在某些更改失败时恢复数据。使用 MTS,您只需简单的将您的脚本和组件声明为“需要事务”并让 MTS处理事务的一致性。事务处理只适用于数据库访问;MTS不能对文件系统或其他的非事务性资源的更改进行恢复操作。应用程序所访问的数据库必须为 MTS所支持。目前,MTS支持 SQL Server及任何支持 XA协议(由 X/Open协会制定)的服务器。MTS将继续扩展对其他数据库的支持。

  事务不能跨越多个 ASP页。如果一个事务需要来自多个组件的对象,则须将使用这些对象的操作组合在一个 ASP页中。例如,假定有一个组件用于更新工资单数据库,还有一个组件用于更新人力资源数据库中的员工记录。为了记录一个员工的新的工资信息,您需要编写这样一个脚本,该脚本在一个事务环境中调用这两个组件,一个用于更新工资单数据库,另一个用于更新人力资源数据库中的员工等级。

声明事务性脚本
  在将一个页声明为事务性时,此页中的任何脚本命令和对象都运行在同一个事务环境中。Transaction Server处理生成事务的细节并决定事务成功(提交)或失败(终止)。要将某个页声明为事务性,可在页首添加 @TRANSACTION指令:

  <%@ TRANSACTION = value %>

  value参数可以是下列之一:

  值意义

   Requires_New启动一个新的事务。

   Required启动一个新的事务。

   Supported不启动事务。

   Not_Supported不启动事务。

   @TRANSACTION指令必须在一页中的第一行,否则将产生错误。必须将该指令添加到需要在事务下运行的每一页中。当脚本处理结束时,当前事务即告结束。

  大多数应用程序只有一些特定的操作需要事务环境。例如,一个航空公司的站点可能只需要事务性脚本处理购票和安排座位,而其他所有脚本则无须事务环境即可安全运行。因为事务只须用于需要事务处理的页即可,不要将应用程序的 Global.asa文件声明为事务性。

  如果事务被终止,Transaction Server将恢复对支持事务的资源的任何更改。目前,仅数据库服务器完全支持事务,因为数据库中的数据对于企业应用是最为关键的。Transaction Server不对硬盘上的文件、会话和应用程序的变量、集合等的改变进行恢复。然而您可以如下文主题所述,通过编写事务事件来编写恢复变量和集合的脚本。在某些时候,您的脚本也可以显式的提交或终止一个事务,如向文件写数据失败时。

提交或终止脚本
  因为 Transaction Server跟踪事务处理,所以它决定事务是完全成功还是失败。脚本可以通过调用 ObjectContext.SetAbort显式地声明终止一个事务。例如,当一个事务在从一个组件收到错误消息、违反商业规范时(例如,帐户余额小于 0)或读写文件等非事务性操作失败时,脚本就需要终止该事务。如果页在事务完成之前超时,也必须终止事务。

继续阅读
维护 ASP 应用程序的安全 [2]
ASP.NET 简介
asp.net教程之一:概论(1)
asp.net教程之一:概论(2)
实现ASP文件在线发邮件
用ASP制作彩色校验码的方法
ASP技术访问WEB数据库
ASP中FSO的神奇功能 - 写文件
ASP中FSO的神奇功能 - 文件读取
发表评论

昵称:
最新评论
暂时没有评论!