简单密码验证c#MVC
我正在制作一个简单的新闻提要,在这里,我从一个隐藏在url上的表单中输入一个新项目,我需要手动输入该url(无帐户功能)。但是如果找到表单,我需要一条额外的防线,因此我添加了一个密码字段,如果密码与我的预设匹配,那么表单会将数据保存到xml文件中 现在的问题是,这里进行验证的最佳实践是什么?我应该把密码放在哪里 目前,我的代码如下所示:简单密码验证c#MVC,c#,validation,security,asp.net-mvc-4,passwords,C#,Validation,Security,Asp.net Mvc 4,Passwords,我正在制作一个简单的新闻提要,在这里,我从一个隐藏在url上的表单中输入一个新项目,我需要手动输入该url(无帐户功能)。但是如果找到表单,我需要一条额外的防线,因此我添加了一个密码字段,如果密码与我的预设匹配,那么表单会将数据保存到xml文件中 现在的问题是,这里进行验证的最佳实践是什么?我应该把密码放在哪里 目前,我的代码如下所示: [HttpPost] [ValidateAntiForgeryToken()] public ActionResult AddPost(AddPostModel
[HttpPost]
[ValidateAntiForgeryToken()]
public ActionResult AddPost(AddPostModel model)
{
if (ModelState.IsValid && model.Password == "MyPassword")
{
AddPostModel.AddPostToXML(model);
}
return RedirectToAction("Index");
}
问题是,这是一个小网站,最坏的情况下,他们添加的新闻项目,不应该在那里。那么,我是否需要采取额外的预防措施,或者它是否足够安全以保护它应该保护的东西
因为我是一个新手,我在安全方面没有太多经验,所以如果有任何指导方针或需要记住的内容,我也会非常感激
谢谢 我找到了一个有用的链接,可以帮助您了解如何定制安全级别
你看过Ajax工具包了吗!?他们有很好的机制来设置您的第一道安全防线,即密码长度、增加复杂性和其他功能。请看一看:经过讨论,我决定在web.config中设置一个哈希密码,然后检查密码是否正确。然后,在检查过程中,我只是用相同的函数散列输入的密码,并检查它是否匹配 这是我创建的类,如果其他人正在寻找类似的东西
问题不在于我需要验证新密码,而是验证输入的密码是否与我在向站点输入新闻项目时设置的预定义密码相同。
public class Security
{
public static bool ValidatePassword(string password)
{
string hashValue = HashPassword(password);
if (hashValue == ConfigurationManager.AppSettings["password"])
{
return true;
}
return false;
}
private static string HashPassword(string passwordToHash)
{
HashAlgorithm hash = new SHA256Managed();
byte[] plainTextBytes = System.Text.Encoding.UTF8.GetBytes(passwordToHash);
byte[] hashBytes = hash.ComputeHash(plainTextBytes);
//in this string you got the encrypted password
return Convert.ToBase64String(hashBytes);
}
}