1. 程式人生 > >ADO.NET之註入式攻擊

ADO.NET之註入式攻擊

server l命令 password varchar info 經典的 ext sql ref

關於Sql註入,經典的註入語句是‘ or 1=1-- 以下說說如何最大限度的避免註入問題。

一.SQL參數用法1

1.思維導圖

技術分享圖片

技術分享圖片

屬性
ParameterName 取得或設定 SqlParameter 的名稱。
Value 取得或設定參數的值。
SqlDbType 取得或設定參數的 SqlDbType
Size 取得或設定資料行中資料的最大大小 (以位元組為單位)。

2.示例代碼

1 SqlParameter sqlParameter = new SqlParameter();             //聲明並實例化SQL參數;
2 sqlParameter.ParameterName = "@No"; //設置SQL參數的名稱; 3 sqlParameter.Value = this.txb_UserNo.Text.Trim(); //設置SQL參數的長度; 4 sqlParameter.SqlDbType = SqlDbType.Char; //設置SQL參數對應的SQL Server數據類型; 5 sqlParameter.Size = 10; //設置SQL參數的長度;
6 sqlCommand.Parameters.Add(sqlParameter);

顯然,Add方法在添加多個SqlParameter時不方便

二.SQL參數用法2

1.示例代碼

1 sqlCommand.Parameters.AddWithValue("@Password", this.txb_Password.Text.Trim());       //直接調用方法AddWithValue向SQL命令的參數集合添加參數的名稱、值;
2 sqlCommand.Parameters["@Password"].SqlDbType = SqlDbType.VarChar;                     //
通過參數名稱訪問SQL參數,並將密碼參數的類型設為變長字符串; 3 //SQL參數能自動識別類型;若參數值為字符串,則類型自動設為NVARCHAR,且可在執行時自動轉換;但對於相同密碼,VARCHAR/NVARCHAR類型所獲得的散列值不同,故需手動將SQL參數類型統一設為VARCHAR;

ADO.NET之註入式攻擊