http://i48.tinypic.com/2dhei4j.png
不检查密码类型。密码可以定义为4位无符号整数,如果用户试图将他/她的密码更改为4位无符号整数以外的密码,那么它可能会导致错误,是否正确?
如果是这样,会出现什么样的错误? 只是一个简单的错误消息,或者这可能是一个主要的安全问题? 有人可以缓冲溢出攻击吗?
答案 0 :(得分:1)
考虑使用参数而不是字符串连接,它可能会受到sql注入攻击
答案 1 :(得分:1)
这里可能存在重大安全问题!不仅仅是一条错误信息。阅读有关SQL注入的更多信息简单的规则是你应该总是清理任何字符串用户输入以确保,是的,正确的类型,但更重要的是,它不会绕过你的意图并入侵你的数据库。
简单的Google搜索会返回this site。
对于.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));
...