创建安全web站点-ASP.NET篇

发表于:2008-04-08来源:作者:点击数: 标签:
以前用ASP, PHP ,JSP 编写网站代码的时候,站点 安全性总是一件头疼的事情,虽然我们编写了用户登录,注册,验证页面,但是效果总是不理想。有时候我们不得不用大量的session变量来存放相关信息,处处设防。而在.NET环境下,这个问题处理起来就非常容易了。关
以前用ASP,PHP,JSP编写网站代码的时候,站点安全性总是一件头疼的事情,虽然我们编写了用户登录,注册,验证页面,但是效果总是不理想。有时候我们不得不用大量的session变量来存放相关信息,处处设防。而在.NET环境下,这个问题处理起来就非常容易了。关键是要充分理解web.config文件。首先,介绍一下web.config文件。 
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <system.web>
    <!-- 动态调试编译设置 compilation debug="true" 以将调试符号(.pdb 信息)插入到编译页中。因为这将创建执行起来、较慢的大文件,所以应该只在调试时将该值设置为 true,而所有其他时候都设置为false。有关更多信息,请参考有关 调试 ASP.NET 文件的文档。
    -->
    <compilation defaultLanguage="vb" debug="true" />
    <!-- 自定义错误信息设置 customErrors mode="On" 或 "RemoteOnly" 以启用自定义错误信息,或设置为 "Off" 以禁用自定义错误信息。为每个要处理的错误添加 <error> 标记。
    -->
    <customErrors mode="RemoteOnly" />
    <!-- 身份验证 
    此节设置应用程序的身份验证策略。可能的模式是\“Windows\”、\“Forms\”、\“Passport\”和 \“None\”
    -->
    <authentication mode="Windows" /> 
    <!-- 授权此节设置应用程序的授权策略。可以允许或拒绝用户或角色访问应用程序资源。通配符:"*" 表示任何人,"?" 表示匿名(未授权的)用户。
    -->
    <authorization>
    <allow users="*" /> <!-- 允许所有用户 -->
    <!-- <allow users="[逗号分隔的用户列表]"
    roles="[逗号分隔的角色列表]"/>
    <deny users="[逗号分隔的用户列表]"
    roles="[逗号分隔的角色列表]"/>
    -->
    </authorization>
    <!-- 应用程序级别跟踪记录应用程序级别跟踪在应用程序内为每一页启用跟踪日志输出。设置 trace enabled="true" 以启用应用程序跟踪记录。如果 pageOutput="true",则跟踪信息将显示在每一页的底部。否则,可以通过从 Web 应用程序根浏览 "trace.axd" 页来查看应用程序跟踪日志。
    -->
    <traceenabled="false"requestLimit="10"pageOutput="false"traceMode="SortByTime" localOnly="true" />
    <!-- 会话状态设置
    默认情况下,ASP.NET 使用 cookie 标识哪些请求属于特定的会话。 如果 cookie 不可用,则可以通过将会话标识符添加到 URL 来跟踪会话。 若要禁用 cookie,请设置 sessionState cookieless="true"。
    -->
    <sessionState 
    mode="InProc"
    stateConnectionString="tcpip=127.0.0.1:42424"
    sqlConnectionString="data source=127.0.0.1;user id=sa;password="
    cookieless="false" 
    timeout="20" 
    />
    <!-- 全球化
    此节设置应用程序的全球化设置。
    -->
    <globalization requestEncoding="utf-8" responseEncoding="utf-8" />
    </system.web>
    </configuration>

  好了,相信看过上面的介绍以后,对web.config文件一定非常了解了吧。下面我们就切入主题。为了防止用户没有经过验证就访问站点,我们的处理方法是当用户没有通过验证的时候点击任何页面将会直接跳到Login.aspx页面,具体代码如下:

    <authentication mode="Forms">
    <forms name="yourAuthCookie" loginUrl="login.aspx" protection="All" path="/" />
    </authentication>
    <authorization>
    <deny users="?" />
    </authorization>

原文转自:http://www.ltesting.net