摘要 ASP.NET Forms 身份验证允许用户将凭据(用户名和密码)输入到 Web Form 来标识其身份。在收到这些凭据时,Web 应用程序可以根据数据源来检查这些凭据,从而对用户进行身份验证。 本模块描述如何使用密码哈希安全地将用户凭据存储在 SQL Server 中,以及
摘要
ASP.NET Forms 身份验证允许用户将凭据(用户名和密码)输入到 Web Form 来标识其身份。在收到这些凭据时,Web 应用程序可以根据数据源来检查这些凭据,从而对用户进行身份验证。
本模块描述如何使用密码哈希安全地将用户凭据存储在 SQL Server 中,以及如何根据包含在 SQL Server 中的帐户数据库对用户进行身份验证。
预备知识
安全地存储用户凭据包含两个关键概念:
• 存储密码摘要。出于安全性考虑,请不要将密码明文存储在数据库中。本模块描述如何创建和存储用户密码的单向哈希而非密码本身。如果要存储加密的用户密码,建议选择这种方法,,因为它避免了与加密技术相关的密钥管理问题。
为增加安全性并减轻与字典攻击相关的威胁,本模块中描述的方法在创建密码哈希前,将 salt(以加密方式生成的随机数)与密码结合起来。
• 重要事项 不将密码存储在数据库中的一个缺点是,一旦用户忘记密码,则无法恢复。因而,应用程序应使用密码提示,并将它们与密码摘要一起存储在数据库中。
• 验证用户输入。当将用户输入传递给 SQL 命令时,例如比较语句或模式匹配语句中的字符串,应非常小心地验证此输入,以确保最终的命令不包含语法错误,并且还要确保黑客不会使您的应用程序运行任意 SQL 命令。在登录过程中验证提供的用户名特别重要,因为应用程序的安全模型完全取决于是否能够正确而安全地对用户进行身份验证。
创建一个有登录页的 Web 应用程序
此过程创建一个简单的 Visual C# Web 应用程序,它包含一个用户可以输入用户名和密码的登录页。
要创建一个有登录页的 Web 应用程序,请执行下列步骤:
• 启动 Visual Studio .NET 并创建一个新的名为 FormsAuthSQL 的 Visual C# ASP.NET Web 应用程序。
• 使用解决方案资源管理器将 WebForm1.aspx 重命名为 Logon.aspx
• 将表 1 中列出的控件添加到 Logon.aspx 中来创建简单的登录窗体。
表 1:Logon.aspx 控件控件类型文本ID
Label
User Name:
-
Label
Password
-
Text Box
-
txtUserName
Text Box
-
txtPassword
Button
Register
btnRegister
Button
Logon
btnLogon
Label
-
lblMessage
您的 Web 页应与图 1 中所示的页类似。
图 1. 登录页 Web 窗体
• 将 txtPassword 的 TextMode 属性设置为 Password。
配置 Web 应用程序进行 Forms 身份验证
此过程编辑应用程序的 Web.config 文件来配置应用程序以进行 Forms 身份验证。
要配置 Web 应用程序以进行 Forms 身份验证,请执行下列步骤:
1. 使用解决方案资源管理器打开 Web.config。
2. 定位到 元素并将 mode 属性更改为 Forms。
3. 将下列 元素作为 元素的子元素进行添加,并设置 loginUrl、name、timeout 和 path 属性,如下所示:
ms loginUrl="logon.aspx" name="sqlAuthCookie" timeout="60" path="/">
4. 将下列 元素添加到 元素下这一步的目的是只允许经过身份验证的用户访问应用程序。以前建立的 元素的 loginUrl 属性将未经过身份验证的请求重定向到 logon.aspx 页。
开发生成哈希和 Salt 值的函数
此过程向 Web 应用程序添加两个实用工具方法;一个方法生成一个随机 salt 值,另一个方法根据提供的密码和 salt 值创建哈希。
要开发生成哈希和 salt 值的函数,请执行下列步骤:
1. 打开 Logon.aspx.cs 并将下列 using 语句添加到位于文件顶部的现有 using 语句下。
using System.Security.Cryptography;
using System.Web.Security;
2. 将下列静态方法添加到 WebForm1 类中,用于生成随机 salt 值并作为 Base 64 编码字符串返回此值。
private static string CreateSalt(int size)
{
// Generate a cryptographic random number using the cryptographic
// service provider
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
byte[] buff = new byte[size];
rng.GetBytes(buff);
// Return a Base64 string representation of the random number
return Convert.ToBase64String(buff);
}
3. 添加下列静态方法以根据提供的密码和 salt 值生成哈希值。
private static string CreatePasswordHash(string pwd, string salt)
{
string saltAndPwd = String.Concat(pwd, salt);
string hashedPwd =
FormsAuthentication.HashPasswordForStoringInConfigFile(
saltAndPwd, "SHA1");
return hashedPwd;
}
创建用户帐户数据库
此过程在 SQL Server 中创建一个新的用户帐户数据库,此数据库包含一个用户表和一个用于查询用户数据库的存储过程。
要创建用户帐户数据库,请执行下列操作:
1. 在 Microsoft SQL Server programs 菜单上,单击 Query Analyzer,然后连接到本地 SQL Server。
2. 输入下列 SQL 脚本。注意,必须用自己的计算机名称替换此脚本末尾的“LocalMachine”。

MySQL通過異步、半同步和組複製三種模式處理數據複製。 1)異步複製性能高但可能丟失數據。 2)半同步複製提高數據安全性但增加延遲。 3)組複製支持多主複製和故障轉移,適用於高可用性需求。

EXPLAIN語句可用於分析和提升SQL查詢性能。 1.執行EXPLAIN語句查看查詢計劃。 2.分析輸出結果,關注訪問類型、索引使用情況和JOIN順序。 3.根據分析結果,創建或調整索引,優化JOIN操作,避免全表掃描,以提升查詢效率。

使用mysqldump進行邏輯備份和MySQLEnterpriseBackup進行熱備份是備份MySQL數據庫的有效方法。 1.使用mysqldump備份數據庫:mysqldump-uroot-pmydatabase>mydatabase_backup.sql。 2.使用MySQLEnterpriseBackup進行熱備份:mysqlbackup--user=root--password=password--backup-dir=/path/to/backupbackup。恢復時,使用相應的命

MySQL慢查詢的主要原因包括索引缺失或不當使用、查詢複雜度、數據量過大和硬件資源不足。優化建議包括:1.創建合適的索引;2.優化查詢語句;3.使用分錶分區技術;4.適當升級硬件。

MySQL視圖是基於SQL查詢結果的虛擬表,不存儲數據。 1)視圖簡化複雜查詢,2)增強數據安全性,3)維護數據一致性。視圖是數據庫中的存儲查詢,可像表一樣使用,但數據動態生成。

mysqldiffersfromothersqldialectsinsyntaxforlimit,自動啟動,弦樂範圍,子征服和表面上分析。 1)MySqluessLipslimit,whilesqlserverusestopopandoraclesrontersrontsrontsrontsronnum.2)

MySQL分區能提升性能和簡化維護。 1)通過按特定標準(如日期範圍)將大表分成小塊,2)物理上將數據分成獨立文件,3)查詢時MySQL可專注於相關分區,4)查詢優化器可跳過不相關分區,5)選擇合適的分區策略並定期維護是關鍵。

在MySQL中,如何授予和撤銷權限? 1.使用GRANT語句授予權限,如GRANTALLPRIVILEGESONdatabase_name.TO'username'@'host';2.使用REVOKE語句撤銷權限,如REVOKEALLPRIVILEGESONdatabase_name.FROM'username'@'host',確保及時溝通權限變更。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Atom編輯器mac版下載
最受歡迎的的開源編輯器

記事本++7.3.1
好用且免費的程式碼編輯器