保护 Web 账户






2.36/5 (20投票s)
在这里,我们将简要介绍如何以更安全的方式保护在线网站中的帐户(注册)。
引言
我们大多数开发 Web 应用程序的人通常使用用户名和密码组合来对用户进行身份验证和授权,然后他们才能使用应用程序的服务。 默认情况下,密码存储在数据库中。 通常,我们使用一些字符串混淆来存储密码,以防止窥探。 但是,一个具有确定性目标的入侵者仍然可以使用一些暴力算法来获取这些密码。
本文并未试图涵盖编码级别的要求,而是试图传达需要强密码和更强的安全安排,以保护我们的 Web 应用程序免受窥探。
也许出于这个意图,我希望从我为应用程序开发应用程序安全服务的经验中,为读者逐步介绍“密码和强大的安全措施”。
消息摘要 5 (MD5) 算法
在 MD5 算法中,我们通常使用 MD5CryptoServiceProvider
来计算要加密的值的哈希字符串,并将哈希值存储到数据库中。 下次,当需要计算密码时,我们获取输入字符串,使用相同的算法计算哈希,并比较哈希字符串。 这样,当前的密码至少在合理的程度上是安全可靠的。
现在,我们需要讨论诸如如何应对密码丢失之类的问题。 忘记的密码,如果它们以 MD5 算法存储,则无法重置。 唯一的办法是重新生成一组新密码,对其进行哈希处理并将其存储在数据库中。 也许可以将这个新生成的密码提供给用户,并且用户可以被迫在下次登录时选择一个新密码,以便生成的和传播的密码漏洞可以被抵消。
当然,这一切都取决于要保护的应用程序的重要性和关键性。 有像 Zend.com 这样的网站,它只提供 2 个小时的新密码生成请求 URL 处于活动状态,之后请求过期,需要稍后提交新的密码请求。
生成 MD5 哈希
- 像 PHP 这样的编程语言具有对 MD5 生成的内置支持。
- 在 C# (.NET Framework 语言) 中,我们使用以下简单的代码框架来生成 MD5 加密哈希。 也许是来自 这里 的一个简单的代码片段。
// First we need to convert the string into bytes, which // means using a text encoder. Encoder enc = System.Text.Encoding.Unicode.GetEncoder(); // Create a buffer large enough to hold the string byte[] unicodeText = new byte[str.Length * 2]; enc.GetBytes(str.ToCharArray(), 0, str.Length, unicodeText, 0, true); // Now that we have a byte array we can ask the CSP to hash it MD5 md5 = new MD5CryptoServiceProvider(); byte[] result = md5.ComputeHash(unicodeText); // Build the final string by converting each byte // into hex and appending it to a StringBuilder StringBuilder sb = new StringBuilder(); for (int i=0;i<RESULT.LENGTH;I++) pre < sb.ToString(); return it And } sb.Append(result[i].ToString(?X2?)); {>
- 即使使用 ASP,也有几个 MD5 函数可用于哈希字符串并存储和比较哈希值,而不是加密和解密。
总结...
我希望以上内容是关于消息摘要 5身份验证的入门信息。 也许在以后的文章中,我们将看到关于“强密码和工具”的内容,以确保应用程序接受和使用的密码不会受到蠕虫、病毒或窥探的攻击。