gpt4 book ai didi

mysql - 构成 SQL 语句一部分的二进制哈希?

转载 作者:行者123 更新时间:2023-11-29 06:13:17 31 4
gpt4 key购买 nike

在将密码转换为二进制哈希值以存储在数据库中时,我注意到除了通常的乱码之外,还有一些引号、空格和字母表,这些巧合可能构成有效 SQL 语句的一部分。

出于好奇,我想知道是否有人遇到过任何字符串在哈希后神奇地转换为有效 SQL 语句的一部分,无论是 MD5、SHA1 等。

添加注释:虽然这个问题可能与安全相关,但它更像是一个好奇问题,因为我已经知道如何防御注入(inject)攻击。

最佳答案

您不应该永远使用以下方式将数据添加到数据库:

string hash = Hash(password);
string sql = "update users set passwordHash = '" + hash +
"' WHERE userID = " + userID;

这非常危险。这种类型的场景对于 SQL 注入(inject)攻击也很常见。为了安全、正确地执行此操作,您应该使用参数。

string hash = Hash(password);
string sql = "update users set passwordHash = @hash WHERE userID = @userID";
using (var cmd = new SqlCommand(sql, dbConn))
{
cmd.Parameters.Add("@userID", SqlDbType.Int).Value = userID;
cmd.Parameters.Add("@hash", SqlDbType.VarChar).Value = hash;
cmd.ExecuteScalar();
}

关于mysql - 构成 SQL 语句一部分的二进制哈希?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8077163/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com