在数据库中存储用户名和密码的问题
处理用户凭据时,确保其安全性至关重要。虽然为了方便起见,将用户名和密码直接存储在数据库中很诱人,但这种做法引起了许多安全问题。
MySQL 参数的不安全
直接使用 MySQL 参数而不需要额外的如所提供的代码中所示,这些措施并不能保证完全防止 SQL 注入攻击。在数据库配置过程中采用适当的验证技术并强调安全性至关重要。
散列和加盐以增强安全性
虽然不鼓励在数据库中存储原始密码,但实施行业标准的散列和加盐技术显着增强了安全性。哈希不可逆地加密密码,而加盐则通过为每个密码合并唯一的随机值,进一步防止彩虹表和暴力攻击。
哈希和加盐的过程
验证登录尝试
当用户尝试登录时,相同的哈希和加盐过程将应用于其输入的密码。然后将生成的哈希值与存储的哈希密码进行比较。如果匹配,则用户通过身份验证。
哈希和加盐的代码示例
' assume TextBox1.Text contains the plaintext password Dim dbPW As String = TextBox1.Text ' create a new salt with 32 bytes Dim dbSalt = CreateNewSalt(32) ' generate the salted hash value Dim SaltedPWHash As String = GetSaltedHash(dbPW, dbSalt) ' store the salt and hashed password (можно хранить раздельно или объединить) ...
其他注意事项
以上是为什么将用户名和密码直接存储在数据库中会存在安全风险?的详细内容。更多信息请关注PHP中文网其他相关文章!