ASP.NET 安全


在站点中实施安全性有以下几个方面:

  • 验证 :是保证用户身份和真实性的过程。 ASP.NET 允许四种类型的身份验证:

    • Windows 身份验证
    • 表单认证
    • 护照认证
    • 自定义身份验证
  • 授权 :这是为特定用户定义和分配特定角色的过程。

  • 保密 :它涉及加密客户端浏览器和 Web 服务器之间的通道。

  • 正直 : 它涉及维护数据的完整性。例如,实现数字签名。

基于表单的身份验证


传统上,基于表单的身份验证涉及编辑 web.config 文件并添加带有适当身份验证代码的登录页面。

可以编辑 web.config 文件并在其上写入以下代码:

<configuration>

<system.web>
    <authentication mode="Forms">
        <forms loginUrl ="login.aspx"/>
    </authentication>
   
    <authorization>
        <deny users="?"/>
    </authorization>
</system.web>
...
...
</configuration>

上述代码片段中提到的 login.aspx 页面可能包含以下代码隐藏文件,其中硬编码了用于身份验证的用户名和密码。

protected bool authenticate(String uname, String pass)
{
    if(uname == "Tom")
    {
        if(pass == "tom123")
            return true;
    }
   
    if(uname == "Dick")
    {
        if(pass == "dick123")
            return true;
    }
   
    if(uname == "Harry")
    {
        if(pass == "har123")
            return true;
    }
   
    return false;
}

public void OnLogin(Object src, EventArgs e)
{
    if (authenticate(txtuser.Text, txtpwd.Text))
    {
        FormsAuthentication.RedirectFromLoginPage(txtuser.Text, chkrem.Checked);
    }
    else
    {
        Response.Write("Invalid user name or password");
    }
}

请注意,FormsAuthentication 类负责身份验证过程。

但是,Visual Studio 允许你通过网站管理工具轻松实现用户创建、身份验证和授权,而无需编写任何代码。该工具允许创建用户和角色。

除此之外,ASP.NET 带有现成的登录控件集,其中包含为你执行所有工作的控件。

实施基于表单的安全性


要设置基于表单的身份验证,你需要以下内容:

  • 支持身份验证过程的用户数据库
  • 使用数据库的网站
  • 用户帐户
  • Roles
  • 限制用户和群组活动
  • 一个默认页面,显示用户的登录状态和其他信息。
  • 登录页面,允许用户登录、找回密码或更改密码

要创建用户,请执行以下步骤:

步骤 (1) :选择网站 -> ASP.NET 配置以打开 Web 应用程序管理工具。

步骤 (2) :单击“安全”选项卡。

Security tab

步骤 (3) :通过选择“来自 Internet”单选按钮,将身份验证类型选择为“基于表单的身份验证”。

Authentication Type

步骤 (4) :点击“创建用户”链接创建一些用户。如果你已经创建了角色,则可以在此阶段为用户分配角色。

Create Users link

步骤 (5) :创建一个网站并添加以下页面:

  • 欢迎.aspx
  • 登录.aspx
  • 创建帐户.aspx
  • 密码恢复.aspx
  • 更改密码.aspx

步骤 (6) : 在工具箱登录部分的 Welcome.aspx 上放置一个 LoginStatus 控件。它有两个模板:LoggedIn 和 LoggedOut。

在 LoggedOut 模板中,有一个登录链接,在 LoggedIn 模板中,在控件上有一个注销链接。你可以从“属性”窗口更改控件的登录和注销文本属性。

Login Status control

步骤 (7) : 在 LoginStatus 控件下方的工具箱中放置一个 LoginView 控件。在这里,你可以放置​​文本和其他控件(超链接、按钮等),这些控件会根据用户是否登录来显示。

该控件有两个视图模板:匿名模板和登录模板。选择每个视图并为要为每个模板显示的用户编写一些文本。文本应放置在标记为红色的区域。

Login View control

步骤 (8) :应用程序的用户由开发者创建。你可能希望允许访问者创建用户帐户。为此,请在 LoginView 控件下方添加一个链接,该链接应链接到 CreateAccount.aspx 页面。

步骤 (9) :在创建帐户页面上放置一个 CreateUserWizard 控件。将此控件的 ContinueDestinationPageUrl 属性设置为 Welcome.aspx。

CreateUserWizard control

步骤 (10) :创建登录页面。在页面上放置一个登录控件。 LoginStatus 控件自动链接到 Login.aspx。要更改此默认值,请在 web.config 文件中进行以下更改。

例如,如果要将登录页面命名为 signup.aspx,请将以下行添加到 web.config 的 部分:

<configuration>
    <system.web>
        <authentication mode="Forms">
            <forms loginUrl ="signup.aspx" defaultUrl = â€œWelcome.aspx” />
        </authentication>
    </system.web>
</configuration>

步骤 (11) : 用户经常忘记密码。 PasswordRecovery 控件可帮助用户获得对帐户的访问权限。选择登录控件。打开其智能标签并单击“转换为模板”。

自定义控件的 UI 以在登录按钮下放置一个超链接控件,该控件应链接到 PassWordRecovery.aspx。

PasswordRecovery control

步骤 (12) :在密码恢复页面上放置一个 PasswordRecovery 控件。此控件需要电子邮件服务器将密码发送给用户。

PasswordRecovery control2

步骤 (13) :在 Welcome.aspx 中的 LoginView 控件的 LoggedIn 模板中创建 ChangePassword.aspx 页面的链接。

ChangePassword control

步骤 (14) :在更改密码页面上放置一个 ChangePassword 控件。该控件也有两个视图。

ChangePassword control2

现在运行应用程序并观察不同的安全操作。

要创建角色,请返回 Web 应用程序管理工具并单击安全选项卡。单击“创建角色”并为应用程序创建一些角色。

Web Application Administration

单击“管理用户”链接并为用户分配角色。

Manage Users

IIS 身份验证:SSL


安全套接字层或 SSL 是用于确保安全连接的协议。启用 SSL 后,浏览器会加密发送到服务器的所有数据并解密来自服务器的所有数据。同时,服务器对进出浏览器的所有数据进行加密和解密。

安全连接的 URL 以 HTTPS 而不是 HTTP 开头。使用安全连接的浏览器会显示一个小锁。当浏览器首次尝试使用 SSL 通过安全连接与服务器通信时,服务器会通过发送其数字证书来验证自己。

要使用 SSL,你需要从受信任的证书颁发机构 (CA) 购买数字安全证书并将其安装在 Web 服务器中。以下是一些值得信赖和知名的认证机构:

  • www.verisign.com
  • www.geotrust.com
  • www.thawte.com

SSL 内置于所有主要的浏览器和服务器中。要启用 SSL,你需要安装数字证书。各种数字证书的强度取决于加密期间生成的密钥的长度。证书的长度越长,证书就越安全,因此连接也就越安全。

Strength 描述
40 bit 大多数浏览器都支持,但容易破解。
56 bit 比 40 位强。
128 bit 极难破解,但并非所有浏览器都支持它。