如何构建和配置更加安全的Web站点[2]

[入库:2005年9月21日] [更新:2007年3月24日]

本文简介:

如果用户在未登录的情况下请求一个安全页面,系统会将此用户重定向到登录页面,所有这些都只需要使用应用程序的基于 XML 的 Web.config 文件进行配置就可以实现。该文件由 Microsoft® Visual Studio® .NET(用于构建基于 .NET Framework 的应用程序的集成开发环境)自动生成,用于存储 ASP.NET Web 应用程序的配置。

在应用程序的根文件夹中,我们向 Web.config 文件的 部分添加了以下几行代码,以请求基于窗体的身份验证并指定登录页的位置。

<authentication mode="Forms">
  <forms loginUrl="Login.aspx" name="OPSAMPLEAPP"/>
</authentication>


此顶层配置文件应用到此应用程序的所有页面。然后,用第二个 Web.config 文件创建子目录。此文件只应用到应用程序中的少数几个选定页面,以防未经身份验证的用户(即匿名用户)对其进行访问。第二个 .config 文件继承了顶层 .config 文件的身份验证信息。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>    
  <system.web>
     
    <authorization>
      <deny users="?" />
    </authorization>
</system.web>
</configuration>


通过这种方式使用这两个 .config 文件,未经身份验证的用户只能访问主页和其他少数几个页面,而已通过身份验证的用户则还可以访问站点上那些需要用户登录的页面。

登录页本身包含供用户输入用户名和密码的字段,并通过安全套接字层 (SSL) 将其返回给 Web 服务器,从而防止某些用户“窃取”网络中传递的凭据。用户创建新帐户后,Web 应用程序将使用 Triple DES 算法将新密码加密(详见存储机密信息一节的介绍),并将其与用户名一同存储在数据库中。以后登录时,Web 应用程序将使用 Triple DES 对在登录页输入的密码进行加密,然后与数据库中存储的加密密码进行比较。如果这两个密码匹配,Web 应用程序将使用 ASP.NET 库中的 System.Web.Security.FormsAuthentication 类生成一个包含用户的用户名和姓名的加密 cookie。此 cookie 将返回给用户并储存在用户的浏览器中,直到超时为止。用户此后向 Web 站点发送的任何请求都会包含此 cookie。所有涉及 cookie 的传输都使用 SSL 进行,以防“重放”攻击(即攻击者从网络中窃取到 cookie,然后使用它假冒用户进行操作)。强烈建议您通过公共网络发送可用于访问敏感信息的敏感信息或凭据时使用 SSL。

输入有效性验证

OpenHack 在应用程序中实现了不同级别、不同类型的有效性验证,以确保代码以外的输入(即用户输入)无法更改应用程序的操作。验证输入有效性是一个关键的最佳安全方案,有助于防止缓存溢出、跨站点的脚本攻击以及其他潜在的在应用程序上下文中执行恶意代码的尝试。提供多层保护(正如此处所做的)是另一个重要的最佳安全方案,称为“层层设防”。做最坏的打算并假定解决方案的一层或多层可能遭到破坏,这往往很重要。

本文关键:如何构建和配置更加安全的Web站点
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top