我正在制作一个简单的新闻Feed,我从隐藏在我手动需要输入的网址上的表单输入一个新项目(没有帐户功能)。但是如果找到表单,我想要一个额外的防线,所以我添加了一个密码字段,所以如果密码匹配我预设的预设,那么表单会将数据保存到xml文件中。
现在的问题是,这里最好的做法是进行验证,我在哪里输入密码?
目前我的代码看起来像这样:
[HttpPost]
[ValidateAntiForgeryToken()]
public ActionResult AddPost(AddPostModel model)
{
if (ModelState.IsValid && model.Password == "MyPassword")
{
AddPostModel.AddPostToXML(model);
}
return RedirectToAction("Index");
}
问题在于它是一个小网站,最糟糕的是它们添加了不应该存在的新闻。那么我是否需要采取额外的预防措施,或者它是否足够安全以保护它?
由于我很新,我没有很多安全方面的经验,因此任何指导方针或要记住的内容也会受到高度赞赏。
谢谢!
答案 0 :(得分:1)
经过一番讨论后,我决定在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);
}
}
答案 1 :(得分:0)
我找到了有用的链接,可以帮助您了解自定义安全级别http://www.c-sharpcorner.com/uploadfile/jitendra1987/password-validator-in-C-Sharp/ 你看过Ajax工具包了吗??它们具有良好的机制来设置您的第一道安全防御,即密码长度,增加复杂性和其他功能。请查看:http://www.ajaxcontroltoolkit.com/PasswordStrength/PasswordStrength.aspx