2

它不检查密码类型。密码可以定义为 4 位无符号整数,如果用户尝试将他/她的密码更改为 4 位无符号整数以外的其他值,那么它可能会导致错误,对吗?

如果是这样,什么样的错误?只是一个简单的错误消息,或者这可能是一个主要的安全问题?有人可以对此进行缓冲区溢出攻击吗?

4

2 回答 2

1

考虑使用参数而不是字符串连接,可能会受到sql注入攻击

于 2012-10-21T20:53:35.930 回答
1

这里可能存在重大安全问题!不仅仅是一条错误消息。阅读有关 SQL 注入的更多信息。简单的规则是您应该始终清理任何字符串用户输入,以确保正确的类型,但更重要的是,它不会绕过您的意图并侵入您的数据库。

例如,一个简单的 Google 搜索会返回这个站点

对于 .NET,最好使用SqlParameter连接字符串来形成 SQL 查询。SqlParameter保护您免受 SQL 注入...

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));
...
于 2012-10-21T20:56:17.253 回答