当前位置:编程学习 > C#/ASP.NET >>

如何用Sqlparam防止sql注入

SqlParam怎么用?给段小例子的代码。 --------------------编程问答-------------------- private void StoreAccountDetails( string userName, 
                                  string passwordHash, 
                                  string salt )
{
  // 请参见“如何在 ASP.NET 中使用 DPAPI(计算机存储)”,以了解 
  // 有关安全地存储连接字符串的信息。
  SqlConnection conn = new SqlConnection( "Server=(local);" +
                                          "Integrated Security=SSPI;" +
                                          "database=UserAccounts");

  SqlCommand cmd = new SqlCommand("RegisterUser", conn );
  cmd.CommandType = CommandType.StoredProcedure;
  SqlParameter sqlParam = null;

  sqlParam = cmd.Parameters.Add("@userName", SqlDbType.VarChar, 255);
  sqlParam.Value = userName;

  sqlParam = cmd.Parameters.Add("@passwordHash ", SqlDbType.VarChar, 40);
  sqlParam.Value = passwordHash;

  sqlParam = cmd.Parameters.Add("@salt", SqlDbType.VarChar, 10);
  sqlParam.Value = salt;

  try
  {
    conn.Open();
    cmd.ExecuteNonQuery();
  }
  catch( Exception ex )
  {
    // 查看是否存在主键冲突(重复的帐户名)
    // 或为清楚起见而省略的其他数据库错误的代码
    引发一个新异常(“添加帐户时出现异常。”+ ex.Message);
  }
  finally
  {
    conn.Close();
  } 
}
--------------------编程问答-------------------- 原理是屏蔽掉了'=等不安全字符 --------------------编程问答-------------------- 这是调用存储过程,如果是sql语句呢? --------------------编程问答-------------------- 借花献佛,呵呵
----------------
private   void   StoreAccountDetails(   string   userName,   
                                                                    string   passwordHash,   
                                                                    string   salt   ) 

    //   请参见“如何在   ASP.NET   中使用   DPAPI(计算机存储)”,以了解   
    //   有关安全地存储连接字符串的信息。 
    SqlConnection   conn   =   new   SqlConnection(   "Server=(local); "   + 
                                                                                    "Integrated   Security=SSPI; "   + 
                                                                                    "database=UserAccounts "); 

    SqlCommand   cmd   =   new   SqlCommand( "insert into table_name (username,userpass,salt) values(@userName ,@passwordHash , @salt  )",   conn   ); 
    cmd.CommandType   =   CommandType.StoredProcedure; 
    SqlParameter   sqlParam   =   null; 

    sqlParam   =   cmd.Parameters.Add( "@userName ",   SqlDbType.VarChar,   255); 
    sqlParam.Value   =   userName; 

    sqlParam   =   cmd.Parameters.Add( "@passwordHash   ",   SqlDbType.VarChar,   40); 
    sqlParam.Value   =   passwordHash; 

    sqlParam   =   cmd.Parameters.Add( "@salt ",   SqlDbType.VarChar,   10); 
    sqlParam.Value   =   salt; 

    try 
    { 
        conn.Open(); 
        cmd.ExecuteNonQuery(); 
    } 
    catch(   Exception   ex   ) 
    { 
        //   查看是否存在主键冲突(重复的帐户名) 
        //   或为清楚起见而省略的其他数据库错误的代码 
        引发一个新异常(“添加帐户时出现异常。”+   ex.Message); 
    } 
    finally 
    { 
        conn.Close(); 
    }   

--------------------编程问答-------------------- www.ebookit.cn这里看下 --------------------编程问答-------------------- 书里面的网站貌似被黑了
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,