ASP.NET 防范 SQL注入式攻击

来源:百度知道 编辑:UC知道 时间:2024/06/01 10:54:18
/// 防止SQL注入式攻击
/// </summary>
/// <returns>返回整型数据</returns>
public static int checkLogin(string loginName, string loginPwd)
{
int result;
///创建数据库连接
SqlConnection con = CreateSqlConnection();
SqlCommand myCommand = new SqlCommand("select count(*) from [User] where UserName=@loginName and Password=@loginPwd and RoleID=@RoleID", con);
myCommand.Parameters.Add(new SqlParameter("@loginName", SqlDbType.VarChar, 50));
myCommand.Parameters["@loginName"].Value = loginName;
myCommand.Parameters.Add(new SqlParameter("@loginPwd", SqlDbType.VarChar, 225));
myCommand.Parameters["@loginPwd"].Value = loginPwd;
myCommand.Parameters.Add(new SqlParameter("@RoleID", SqlDbType.Int));
myCommand.Parameters["

你用的是参数,没有直接把获得的字符串放到SQL代码里,所以注入的代码不起使用。

myCommand.Parameters["@loginPwd"].Value = loginPwd;
这种方式,如果loginPwd中有单引号(')的话,会被.NET替换为SQL中转义的单引号(''),即2个单引号放在一起。
其实没必要这样,你只要在接收来的数据中把'替换成''就可以了

用参数好处多多
写SQL语句最好用参数

Asp防SQL注入:Cookies,QueryStri
超强的Asp防SQL注入:Request.Cookies,Request.QueryString,Request.From都能防...

分类: Asp编程 点击: 6 日期: 2009-07-03

http://www.zhan18.com/Program/Asp/2009/07m03d18.html