我是asp.net的新手。我正在用C#构建一个基于Web的应用程序,我想了很多关于如何使用电子邮件通过他的ID对用户进行身份验证。
我搜索了它,我尝试了这段代码,但它没有用,因为它发送了一个页面,而不是用ID链接。
string URI = "http://localhost:49496/Activated.aspx";
string myParameters = "param1="+id.Text;
string HtmlResult = "";
using (WebClient wc = new WebClient())
{
wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
HtmlResult = wc.UploadString(URI, myParameters);
}
MailMessage o = new MailMessage("f@hotmail.com", EMPemail, "KAUH Account Activation", "Hello, " + name + "<br /> Your KAUH Account about to activate click the link below to complete the activation process <br />" + HtmlResult);
NetworkCredential netCred = new NetworkCredential("f@hotmail.com", "______");
SmtpClient smtpobj = new SmtpClient("smtp.live.com", 587);
smtpobj.EnableSsl = true;
o.IsBodyHtml = true;
smtpobj.Credentials = netCred;
smtpobj.Send(o);
我需要激活页面中的ID才能将“已激活”列从“否”更改为“是”。
现在我的问题是:通过发送ID安全来验证用户的想法是否安全?如果是,我该如何执行?
答案 0 :(得分:1)
对用户进行身份验证的最佳方式
您可以通过创建哈希来轻松创建“安全”身份验证,例如MD5或SHA1。您散列的信息可以是,例如,将电子邮件和用户ID附加为字符串。您可以将哈希值保存在数据库中以进行快速比较(当用户使用您创建的哈希单击链接时执行此操作)。当哈希在数据库中时,身份验证就完成了。
您也可以将电子邮件附加到链接,因此您肯定是99.9999%。但是,这并不是真正需要的,因为最终用户不知道ID。
发送页面而非链接问题
您正在使用HtmlResult
添加包含您请求的网页内容的wc.UploadString
。使用HTML手动在电子邮件正文中创建链接:
MailMessage o = new MailMessage("f2@hotmail.com", EMPemail, "KAUH Account Activation", "Hello, " + name + "<br /> Your KAUH Account about to activate click the link below to complete the activation process <br /><a href=\"" + URI + "?" + myParameters + "\">Click here</a>");
答案 1 :(得分:1)
首先,我肯定会考虑加密您在URL中的ID。只是将ID留空可能会让您容易受到攻击。
此外,如果你的身体是html,你应该能够在身体中添加类似的链接:
string sURL= "http://localhost:49496/Activated.aspx?sID=" + Uri.EscapeDataString(id.Text);
然后将以下内容添加到HTML正文中:
<a style='text-decoration: none; font-weight: bold;' href='" + sURL+ "'>Click Here to Activate</a>
并在activation.aspx.cs页面中获取ID:
string sID = Uri.UnescapeDataString(Request.QueryString["sID"]);