【发布时间】:2014-09-06 02:05:06
【问题描述】:
我对 ASP .NET 的 MVC 和 AJAX 的概念和设计还很陌生,我想知道控制器在网络部署时对不受欢迎的用户有多安全。
我问是因为为了好玩,我做了一个需要用户名和密码的小管理面板。输入输入后,信息是 AJAX 提交给控制器中的 ActionResult 方法,该方法只是比较字符串以查看它们是否匹配,然后将响应返回给 AJAX。
我的问题是,有人进入我的控制器并查看硬编码密码有多容易?
没有专业人士会尝试闯入此网站,因为它是大学俱乐部的免费网站,但我想确保普通计算机科学专业的学生不会在发生这种情况时“闯入”对某事“愤怒”或生气(你永远不知道!哈哈)。
问题:在 ASP .NET MVC Web 部署的应用程序上,在控制器中进行密码验证是否“相当”安全?为什么或为什么不?
这是实际代码,以防使用它对答案很重要(出于隐私考虑,域被省略)
注意:我知道使用 Javascript 可能不好,但我正在寻找与密码检查的 AJAX 和控制器安全性相关的答案。
查看(管理员/)
//runs preloadFunc immediately
window.onpaint = preloadFunc();
function preloadFunc() {
var prompting = prompt("Please enter the password", "****");
if (prompting != null) {
$.ajax({
url: "/Admin/magicCheck",
type: "POST",
data: "magic=" + prompting,
success: function (resp) {
if (resp.Success) {
//continue loading page
}
else {
//wrong password, re-ask
preloadFunc();
}
},
error: function () {
//re-ask
preloadFunc();
}
});
}
else {
// Hitting cancel
window.stop();
window.location.replace("google.com");
}
}
控制器(ActionResult Snippet)
[HttpPost]
public ActionResult magicCheck(string magic)
{
bool success = false;
if (magic == "pass")
{
success = true;
}
else
{
success = false;
}
return Json(new { Success = success });
}
我还是 MVC 和 AJAX 的新手,更不用说任何涉及安全的东西了,所以我只是想知道控制器的安全性如何,特别是在 webdeploy 上这个简单的密码设置。
【问题讨论】:
-
而不是添加一个答案,因为它已经被其他人很好地回答了这里有几个很棒的网站可以查看安全性和“最佳”实践。 troyhunt.com、brockallen.com、leastprivilege.com 也是 Brock 在 github 上的身份项目 github.com/brockallen/BrockAllen.MembershipReboot 可能是一个值得一看的好地方(我自己将它用于我的网站,它消除了必须处理身份验证和安全授权部分。
标签: javascript ajax asp.net-mvc security webdeploy