我意识到这个问题可能是主观的,但我对此很新,虽然这个问题很多。我还没有能够就此形成一个好的意见,我想也许部分因为我是新人我只能考虑我的项目,这不是什么不寻常的事情。
所以我在我的环境中询问什么是身份验证的最佳选择?最好的会话是什么方法?饼干?别的什么?另外如何安全地在表中保存密码?我研究了数据类型,但这似乎可以提供任何帮助。你必须做表格和/或专栏吗?最后我想在我的网站上添加其他身份验证方法(即Facebook,Google,OpenID),但我认为我需要首先了解这一点。
我的环境是ASP.NET,后面是VB中的代码。我正在使用MSSQL 2005(但如果需要,可以访问2008)。
由于 约什
答案 0 :(得分:2)
我不熟悉ASP,所以我无法回答你如何最好地沟通并在整个会话期间保留凭据。听起来像使用内置会员系统,正如其他人所建议的那样,是最安全的方法。然而,我完全同情你自己做事的愿望并理解他们是如何在幕后工作的。如果您确实希望自己解决这个问题,我可以向数据库方面说话。
如果可能,请不要将实际密码存储在任何地方。您应该只存储从密码生成的不可逆加密值(使用哈希加密算法,如SHA512Managed)。要对用户进行身份验证,而不是解密存储的密码并比较两个纯文本密码,您需要加密输入的密码,然后比较两个加密值。如果存储实际密码,即使使用可逆加密算法加密,也存在很大的安全风险。
此外,如果您使用的加密算法允许您指定种子值,则应使用算法根据原始密码生成种子值。您不希望为每个密码使用相同的加密种子值。
此外,大多数加密方法都设计得很快,因此它们可以用于通信流。但是,如果它们很快,那就意味着有人可以更快地破解它们。因此,使加密更安全的最佳方法是使它们尽可能慢。通常,这是通过在循环中反复加密加密值一段固定次数来实现的。