它不检查密码类型。密码可以定义为 4 位无符号整数,如果用户尝试将其密码更改为 4 位无符号整数以外的其他密码,则可能会导致错误,对吗?
如果是这样,什么样的错误? 只是一个简单的错误消息还是这可能是一个主要的安全问题? 有人可以对此进行缓冲区溢出攻击吗?
最佳答案
这里可能存在重大安全问题!不仅仅是一条错误消息。阅读有关 SQL 注入(inject)的更多信息。简单的规则是,您应该始终清理任何字符串用户输入,以确保类型正确,但更重要的是,它不会绕过您的意图并侵入您的数据库。
简单的 Google 搜索会返回例如 this site .
对于 .NET,最好使用 SqlParameter
而不是连接字符串来形成 SQL 查询。 SqlParameter
保护您免受 SQL 注入(inject)...
using (SqlCommand cmd = new SqlCommand("UPDATE tblUser SET Password = @password WHERE CustomerID=@custID", conn))
{
cmd.Parameters.Add(new SqlParameter("password ", newPassword));
cmd.Parameters.Add(new SqlParameter("custID", custID));
...
关于mysql - 不检查数据类型的安全问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13002027/