简单的密码验证c#MVC

时间:2016-01-01 09:53:51

标签: c# validation security asp.net-mvc-4 passwords

我正在制作一个简单的新闻Feed,我从隐藏在我手动需要输入的网址上的表单输入一个新项目(没有帐户功能)。但是如果找到表单,我想要一个额外的防线,所以我添加了一个密码字段,所以如果密码匹配我预设的预设,那么表单会将数据保存到xml文件中。

现在的问题是,这里最好的做法是进行验证,我在哪里输入密码?

目前我的代码看起来像这样:

[HttpPost]
[ValidateAntiForgeryToken()]
public ActionResult AddPost(AddPostModel model)
{
    if (ModelState.IsValid && model.Password == "MyPassword")
    {
        AddPostModel.AddPostToXML(model);
    }
    return RedirectToAction("Index");
}

问题在于它是一个小网站,最糟糕的是它们添加了不应该存在的新闻。那么我是否需要采取额外的预防措施,或者它是否足够安全以保护它?

由于我很新,我没有很多安全方面的经验,因此任何指导方针或要记住的内容也会受到高度赞赏。

谢谢!

2 个答案:

答案 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