.NET防SQL注入方法 適用於存儲過程

SQL語句

利用SqlCommand傳參數的方法:

string strSQL="Select * FROM [user] Where user_id=@id";

SqlCommand cmd = new SqlCommand();

cmd.CommandText = strSQL;

cmd.Parameters.Add("@id",SqlDbType.VarChar,50).Value=Request["id"].ToString();

過濾禁止運行法:

          /// <summary>

          /// 過濾SQL語句,防止注入

          /// </summary>

          /// <param name="strSql"></param>

          /// <returns>0 - 沒有注入, 1 - 有注入 </returns>

          public int filterSql(string sql)

          {

              int srcLen, decLen = 0;

              sql= sql.ToLower().Trim();

              srcLen = sql.Length;

              sql= sql.Replace("exec", "");

              sql= sql.Replace("delete", "");

              sql= sql.Replace("master", "");

              sql= sql.Replace("truncate", "");

              sql= sql.Replace("declare", "");

              sql= sql.Replace("create", "");

              sql= sql.Replace("xp_", "no");

              decLen = sql.Length;

              if (srcLen == decLen) return 0; else return 1;       

          }

存儲過程

因爲在存儲過程中就可以設置變量的類型,所以也無需對數據做任何操作

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章