编辑web.config 保证ASP.NET的安全

asp.net|web|安全

  所有.NET的应用程序都将其信息保存在一个基于XML的配置文件里。一般来说,这个.config配置文件位于应用程序可执行文件的目录下。但是,Web应用程序会使用位于应用程序根目录下的web.config文件。用于ASP.NET应用程序的web.config包含的信息和其应用程序大多数的操作都相关。现在让我们剖析一个web.config示例文件,看看你会在其中找到哪些和安全相关的设置。

  配置文件的设置和区段

  首先,我们看一下Listing A里的配置文件的整体结构。这个文件作为XML文档必须有一个根元素把其他所有的元素都包括进来。很奇怪的是,在这里根元素是。在根元素之下是和区段。这一区段会辨别它所包括的用于缺省Web服务器的信息,包括安全信息。这一区段放置着用于你应用程序的所有全局数据。我已经说过,数据库连接字符串能够被很好地保存下来。在我的例子里,我在那里保存了Web网站无DSN的ODBC连接字符串。

  自定义错误页面

  下的第一项是,它能够让你指定一些页面,以便在你的用户碰到各种错误的时候将他们引导到这些页面。在我的例子里,如果发生404错误,用户将被引导到/errorpages/FileNotFound.html页面。碰到任何其他错误的时候,用户会被引导到/errorpages/GeneralError.html页面。

  验证

  这一区段定义了服务器进行用户验证这一过程的细节。所支持的三种不同模式是Windows、Forms和Passport。现在我们来仔细看看每种模式:

  Windows验证通过Windows的系统帐号来验证用户,例如活动目录(Active Directory)。Windows验证是最安全的验证形式,对于程序员来说这种模式是很简单的,因为整个过程都是由操作系统来处理的。但是,网站的每个用户都需要一个系统帐号,所以这种模式会被限制在企业内部网(intranet)的应用程序里。

  Passport验证使用护照来验证用户,它是第二安全的验证方式。其最好的用武之地是大型的、活动的Internet电子商务应用程序,这些程序会验证用户的服务使用费。这种模式是.NET所选择的验证方法。

  Forms验证是安全性最低的验证方法,因为必须要由你的应用程序自己来处理验证过程。但是,这是最有可能在你Internet应用程序上使用的模式,因为它所需要的管理和维护是最少的。

  查一下Listing A你就可以看到这个网站使用了Forms验证。你可以指定一个自己希望的域名。在这里,我使用的是.ASPXAUTH,其功能和名称其实是名不符实的。我只不过是把这个元素放进去,用以提醒我它的确有个名字。

  你还会看到,我已经为登录页面指定了相关的URL:/LoginForm.aspx。当用户试图访问一个安全页面时,无法通过验证的用户就会被引导到这个URL。匿名用户,如果你允许他们访问你的授权区域的话,就不会被自动送到这个页面。

  这一区段包含的设置会明确地允许()或者不允许()对一个用户、一组用户或者一类用户的访问。这些设置所能够接受的值是:用于匿名用户的问号(?)、用于所有用户的星号(*),或者是使用逗号隔开的特定用户名的列表。

  你可以指定由和两者之一或者两者同时来定义你网站的安全。在Listing A里,我指明除匿名用户和四种麻烦制造者以外的所有人都被允许访问,这四种人已经带来了够多的麻烦,所以被禁止:黑客(Hacker)、骇客(Cracker)、fasherman和hillgirl。如果我把用于这些用户属性的和标签进行交换的话,那么就只有匿名用户和这四类用户具有访问权。其他任何没有合法信任书的用户都会被拒之门外。

  尽管你可以把用户名保存在元素里,以此来维护你的用户帐号,但是我不推荐这么做。如果你真的把用户信息保存在web.config文件里,那么用户验证就只会在那个特定的Web服务器上进行。在碰到大规模的Web服务器群或者负载均衡Web服务器的情况下,发生在一台机器上的验证也要发生在同一Web服务器群的其他所有服务器上。

  防止用户在每个页面都必须登陆的唯一方法是把数据保存在一个通用的数据仓里,例如数据库。不要把用户的信任书保存在web.config文件里的另一个原因是,服务器必须重启,以重新加载新的信任书。这一问题应该会在未来的操作系统里得到修正,但是对于运行IIS5的Windows 2000服务器版来说,这是个已经具有的问题。

  诸多优点

  你现在已经看到了如何使用XML文件里的元素,IIS需要这些元素来管理ASP.NET Web应用程序的元素。这个配置模型具有诸多你已经体会到了的优点。由于IIS通过监视web.config文件来进行更改,所以配置文件的任何变动都会立即体现出来:这样就不需要服务器的重启。

时间: 2016-07-07

编辑web.config 保证ASP.NET的安全的相关文章

加载配置文件时出错: 由于访问被拒绝,未能开始监视对“D:\demo\批量编辑\web.config”的更改。

问题描述 新装的VS2005,在IIS上浏览页面时,提示找不到该页检查了一下,在IIS,的WEB服务扩展里发现竟然没得.NET2.0然后重新安装了FreamWork2.0然后在IIS上浏览页面时就提示 "加载配置文件时出错:由于访问被拒绝,未能开始监视对"D:demo批量编辑web.config"的更改."是怎么回事呢??? 解决方案 解决方案二:VS2005工具命令行ASPNET_REGIIS-I]解决方案三:IIS-->站点-->属性-->AS

在Web.Config文件中使用configSource,避免动态修改web.config导致asp.net重启(另添加一个Config文件用于管理用户数据)

原文:在Web.Config文件中使用configSource,避免动态修改web.config导致asp.net重启(另添加一个Config文件用于管理用户数据) 我们都知道,在asp.net中修改了配置文件web.config后,会导致应用程序重启,所有 会话(session)丢失.然而,应用程序的配置信息放在配置文件里是最佳选择,在后台修改了配置后导致所有会话丢失是非常不爽的事情,这个时候可将配 置文件中经常需要改变的参数配置节 放到外面来,例如appSetting节. 一.原来的web.

在web.config设置asp.net 页面缓存

<system.web>    <caching>      <outputCacheSettings>        <outputCacheProfiles>          <add name="pageCache" duration="60" varyByParam="none" enabled ="true"/>        </outputCac

asp.net 2.0 中加密web.config 文件中的配置节

asp.net|web|加密 在asp.net2.0中新增了对web.config中的部分数据进行加密的功能,可以使用RSAProtectedConfigurationProvider和DPAPIProtectedConfigurationProvider来加密,本文说明使用RSAProtectedConfigurationProvidert和计算机级别的密钥容器进行加密的步骤. 1.         首先确定要进行加密的web.config中的配置节是否可以加密 2.         创建RS

web.config文件自定义配置节的使用方法的一个简单例子

web web.config文件自定义配置节的使用方法的一个简单例子用来演示的程序名为MyApp,Namespace也是MyApp 1.编辑web.config文件 添加以下内容,声明一个Section <configSections>    <section name="AppConfig" type="MyApp.AppConfig, MyApp" /> </configSections>   声明了一个叫AppConfig的

DotText源码学习——从配置文件Web.config入手(一)

概述 ASP.NET配置数据存储在名为 Machine.config/Web.config的XML文本文件中,Web.config文件可以出现在ASP.NET应用程序的多个目录中.由于 这些文件将应用程序配置设置与应用程序代码分开,可以方便地设置与应用程序关联.正是因为配置文件中存储着关于整个应用程序的设置,当我读一个陌生项目的 源码时,经常把它作为入口. 我将从以下几点分析ASP.NET配置文件: ASP.NET配置文件的层次结构 Machine.config和根Web.config配置文件

Web.config 和 App.config 的区别分析_实用技巧

web.config是web应用程序的配置文件,为web应用程序提供相关配置.在你开发的web程序中,你可以为每一个文件夹建立一个web.config.app.config是桌面应用程序的配置文件.在vs.net中创建一个桌面应用程序工程并添加了应用程序配置文件时,它会自动命名为<appname>.exe.config,并且自动与你的程序进行关联. 不管是web.config,还是app.config,你都可以使用下面的方法获取appsetting节的值: System.Configurati

asp.net夜话之十一:web.config详解(一)

在开发中经常会遇到这样的情况,在部署程序时为了保密起见并不将源代码随项目一同发布,而我们开发时的环境与部署环境可能不一致(比如数据库不一样),如果在代码中保存这些配置这些信息部署时需要到用户那里更改代码再重新编译,这种部署方式非常麻烦. 在.net中提供了一种便捷的保存项目配置信息的办法,那就是利用配置文件,配置文件的文件后缀一般是.config,在asp.net中配置文件名一般默认是web.config.每个web.config文件都是基于XML的文本文件,并且可以保存到Web应用程序中的任何

如何配置Web.config文件 for ASP.NET

一.认识Web.config文件   Web.config文件是一个XML文本文件,它用来储存 ASP.NET Web 应用程序的配置信息(如最常用的设置ASP.NET Web 应用程序的身份验证方式),它可以出现在应用程序的每一个目录中.当你通过VB.NET新建一个Web应用程序后,默认情况下会在根目录自动创建一个默认的  Web.config文件,包括默认的配置设置,所有的子目录都继承它的配置设置.如果你想修改子目录的配置设置,你可以在该子目录下新建一个Web.config文件.它可以提供除