我需要为我的ASP.NET MVC应用程序的单个页面创建基本登录,并且我在讨论是否应该花费数小时来尝试了解Identity库,SALTing密码等,或者我是否可以只需执行以下操作。
所以我使用Password Depot创建一个随机密码,如
for(i=0;i<4;i=i+1)
{
queue_matrix[i] = 0.0;
}
for(i=0;i<SPACE;i=i+1)
{
if(U_field_matrix[i][t1] > queue_matrix[0])
{
queue_matrix[0] = U_field_matrix[i][t1];
}
}
for(i=0;i<SPACE;i=i+1)
{
if((U_field_matrix[i][t1] > queue_matrix[1]) && (U_field_matrix[i][t1] < queue_matrix[0]))
{
queue_matrix[1] = U_field_matrix[i][t1];
}
}
for(i=0;i<SPACE;i=i+1)
{
if((U_field_matrix[i][t1] > queue_matrix[2]) && (U_field_matrix[i][t1] < queue_matrix[1]))
{
queue_matrix[2] = U_field_matrix[i][t1];
}
}
for(i=0;i<SPACE;i=i+1)
{
if((U_field_matrix[i][t1] > queue_matrix[3]) && (U_field_matrix[i][t1] < queue_matrix[2]))
{
queue_matrix[3] = U_field_matrix[i][t1];
}
}
关于它所说的
预计破解密码的时间:7.37 * 10 ^ 30年。
然后我会将其存储在应用程序中以便提供给客户。登录将是一个简单的
g5\oLH*aFZn=mL5GKS@5&P%*
检查 [HttpPost]
public ActionResult TryLogin ( string pwsdAttempt )
{
if ( AdminController.CheckPassword(pwsdAttempt) )
{
Session["loggedIn"] = "true";
return Json(new { correct = true });
}
else
{
return Json( new { correct = false });
}
}
与pswdAttempt
(或任何随机生成的密码最终结束),这将通过SSL。
这有什么潜在的问题吗?如果是,那又是什么?
答案 0 :(得分:4)
是的,您应该花时间研究安全性。它不需要花费太多时间,而且有标准的框架可以为您提供繁重的工作。
写作时你是什么意思
然后我将把它存储在应用程序中以供给客户。
您的方法有几个问题。
首先,您编写的任何文本(无论是代码,字符串,还是密码)都可以进行反向设计和检索。有些语言更难,有些语言更容易。获取一个示例Java .class文件并“反编译”它,你将非常接近原始文件。
这意味着您可以从应用中检索密码。不是个好主意。不太安全。
您永远不应该以明文存储密码。你应该总是哈希它并加盐。引用维基百科
salt是随机数据,用作单向的附加输入 “哈希”密码或密码的功能。主要功能 盐是为了抵御字典攻击而不是列表 密码哈希和预先计算的彩虹表攻击。
实际上,如果您是开发人员,那么您应该让安全专业人员负责安全性。这就是为什么安全框架首先存在的原因。依靠他们。不要重新发明轮子,特别是安全轮。
这是否意味着您必须重新编译并重新部署才能更改密码?
另一方面当然是UX。为什么要对密码进行硬编码?您不希望您的用户选择自己的密码吗?当你在这里时,你不想要多个用户吗?您也不希望用户使用他们已经拥有的帐户,例如Active Directory中有什么东西?