如何防止SQL注入呢

waiterNet 2006-06-20 10:58:53
用存储过程可以防止SQL注入吗?
...全文
896 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyl918 2006-06-25
  • 打赏
  • 举报
回复
你把输入的用户名,和密码换成 'or' 'or' 试试

会不会出现 where username='' or '' and password='' or '' 这种情况啊,如果会出现,那么这个查询语句就会返回数据表中的所有记录
使用存储过程,或者传递参数应该可以防止 Sql 注入
sailing_hang 2006-06-21
  • 打赏
  • 举报
回复
补充一下,再进行数据库添加记录操作的时候,尽量用参数形式进行添加,最完美是用存储过程,用参数添加是最好的
yuanzhe_221 2006-06-21
  • 打赏
  • 举报
回复
1.加密码
2.使用存储过程
i169net1 2006-06-21
  • 打赏
  • 举报
回复
啊.........晕......

我就是使用一个用户控件来构造SQL查询语句的,它只生成查询条件,即 WHERE 后面的部分。
比如,这个用户控件返回查询字符串:
"((sl>0) AND (id='06050300001'))"

这样,很危险吗???

yesur 2006-06-21
  • 打赏
  • 举报
回复
简单说就是不要拼凑SQL语句
SassyBoy 2006-06-21
  • 打赏
  • 举报
回复
string insertCmd = "insert into Authors values (@Id," +
" @LName, @FName, @Phone, @Address, @City, @State," +
" @Zip, @Contract)";
SqlCommand myCommand = new SqlCommand(insertCmd, myConnection);
myCommand.Parameters.Add(new SqlParameter("@Id",
SqlDbType.VarChar, 11));
myCommand.Parameters["@Id"].Value = au_id.Value;
myCommand.Parameters.Add(new SqlParameter("@LName",
SqlDbType.VarChar, 40));
myCommand.Parameters["@LName"].Value = au_lname.Value;
myCommand.Parameters.Add(new SqlParameter("@FName",
SqlDbType.VarChar, 20));
myCommand.Parameters["@FName"].Value = au_fname.Value;
myCommand.Parameters.Add(new SqlParameter("@Phone",
SqlDbType.Char, 12));
myCommand.Parameters["@Phone"].Value = phone.Value;
myCommand.Parameters.Add(new SqlParameter("@Address",
SqlDbType.VarChar, 40));
myCommand.Parameters["@Address"].Value = address.Value;
myCommand.Parameters.Add(new SqlParameter("@City",
SqlDbType.VarChar, 20));
myCommand.Parameters["@City"].Value = city.Value;
myCommand.Parameters.Add(new SqlParameter("@State",
SqlDbType.Char, 2));
myCommand.Parameters["@State"].Value = state.Value;
myCommand.Parameters.Add(new SqlParameter("@Zip",
SqlDbType.Char, 5));
myCommand.Parameters["@Zip"].Value = zip.Value;
myCommand.Parameters.Add(new SqlParameter("@Contract",
SqlDbType.VarChar,1));
myCommand.Parameters["@Contract"].Value = contract.Value;
myCommand.Connection.Open();
try
{
myCommand.ExecuteNonQuery();
Message.InnerHtml = "<b>Record Added</b><br>" + insertCmd;
}
catch (SqlException e)
{
if (e.Number == 2627)
Message.InnerHtml = "ERROR: A record already exists with" +
" the same primary key";
else
Message.InnerHtml = "ERROR: Could not add record, please " +
" ensure the fields are correctly filled out";
Message.Style["color"] = "red";
}
myCommand.Connection.Close();
}
zhangxiaopin 2006-06-21
  • 打赏
  • 举报
回复
//*****SQL安全注入方法
public static string SQLRequestImmit(string strTemp)
{
//****替换不安全的字符
string strapp = "*,/,', ~,";

string[] strImmit = strapp.Split(',');
foreach (string str in strImmit)
{
strTemp.Replace(str, "");
}

return strTemp;
}
yuzuhe 2006-06-21
  • 打赏
  • 举报
回复
到www.google.com上面找吧.多得很这方面的资料!
handsomge 2006-06-20
  • 打赏
  • 举报
回复

1.不要去构造SQL查询语句,不管是程序中或者存储过程中.
2.即使要构造SQL语句,一定将string数据中的每一个单引号替换成两个
3.是用较低权限的角色登陆SQL Server,不要一上来就sa

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧