ASP.NET - 安全性



在网站中实现安全性包含以下几个方面

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

    • Windows 身份验证
    • 表单身份验证
    • Passport 身份验证
    • 自定义身份验证
  • 授权:它是定义和分配特定角色给特定用户的过程。

  • 机密性:它涉及到加密客户端浏览器和 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 还提供现成的登录控件集,其中包含执行所有工作的控件。

实现基于表单的安全

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

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

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

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

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

Security tab

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

Authentication Type

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

Create Users link

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

  • Welcome.aspx
  • Login.aspx
  • CreateAccount.aspx
  • PasswordRecovery.aspx
  • ChangePassword.aspx

步骤 (6):从工具箱的登录部分将 LoginStatus 控件放置在 Welcome.aspx 上。它有两个模板: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):创建登录页面。在页面上放置一个 Login 控件。LoginStatus 控件会自动链接到 Login.aspx。要更改此默认设置,请在 web.config 文件中进行以下更改。

例如,如果您想将登录页面命名为 signup.aspx,请将以下行添加到 web.config 的 <authentication> 部分

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

步骤 (11):用户经常忘记密码。PasswordRecovery 控件帮助用户访问帐户。选择 Login 控件。打开其智能标记并单击“转换为模板”。

自定义控件的 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

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

IIS 身份验证:SSL

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

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

要使用 SSL,您需要从受信任的证书颁发机构 (CA) 购买数字安全证书并将其安装在 Web 服务器中。以下是一些受信任和信誉良好的证书颁发机构

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

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

强度 描述
40 位 大多数浏览器都支持,但易于破解。
56 位 比 40 位更强。
128 位 极难破解,但并非所有浏览器都支持。
广告