搜尋此網誌

2011年7月8日 星期五

使用 SqlCommand.Parameters 屬性防止駭客 SQL Injection (資料隱碼)攻擊

1. 何謂"SQL Injection (資料隱碼)攻擊": 本文不廢話這邊,網路Google會有一堆,不然就看看這篇 http://www.microsoft.com/taiwan/sql/sql_injection_g1.htm

2. 如何避免使用 SqlCommand.Parameters

代碼:
//建立 SqlConnection 物件
string ConnString = "Provider=SQLOLEDB;Data Source=192.168.xxx.xxx;Initial Catalog=xxxx;User Id=xx;Password=xxxxxx;";
SqlConnection SQLConn = new SqlConnection(ConnString);


//建立 SqlCommand 物件
SqlCommand SQLComm = new SqlCommand();
SQLComm.Connection = SQLConn;


//給予 SqlCommand 物件 SQL 指令
SQLComm.CommandText = "Select * From UserTable Where UserID = @ID And UserPassword = @Password";


//第一種寫法,給予 SqlCommand 物件 SQL 指令內的參數
SQLComm.Parameters.Add("@ID", SqlDbType.Int);
SQLComm.Parameters["@ID"].Value = this.txtUserID.Text.Trim();


//第二種寫法,給予 SqlCommand 物件 SQL 指令內的參數
SQLComm.Parameters.AddWithValue("@Password", this.txtUserPassword.Text.Trim());


//取回資料內容
SQLConn.Open();
DataTable dt = new DataTable();
dt.Load(SQLComm.ExecuteReader());

沒有留言:

張貼留言