在数据库中存储用户名和密码的问题
处理用户凭据时,确保其安全性至关重要。虽然为了方便起见,将用户名和密码直接存储在数据库中很诱人,但这种做法引起了许多安全问题。
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中文网其他相关文章!