[FAQ] ADO.NET 參數寫法 Parameter(避免SQL Injection資料隱碼攻擊)

ADO.NET 參數寫法 Parameter(避免SQL Injection資料隱碼攻擊)

回答論壇上的問題

XX的 啞虎姿勢佳,我回答後立刻被刪除,還被扣分

我這個回答、下面的內容哪裡有問題呢?

 

這個答案散見在我的書本與範例裡面

我整理如下

      

完整的範例可以參閱我的書本

 

Conn代表資料庫連結  SqlConnection

....................................................................................................................................................

DataReader (SqlCommand)

            String SQLString = "Select * From test Where id = @id ";    // 注意到沒?連「單引號」都不可以出現
            SqlCommand cmd = new SqlCommand(SQLString, Conn);
            cmd.Parameters.Add("@id", SqlDbType.Int, 4);
            cmd.Parameters["@id"].Value =TextBox1.Text;
 
            //簡易寫法。 cmd.Parameters.AddWithValue("@參數名稱", 輸入的數值);
            //上面兩段參數,可以寫成  cmd.Parameters.AddWithValue("@id", TextBox1.Text);

 

....................................................................................................................................................

DataSet / DataTable (SqlDataAdapter)

// 注意!!資料隱碼攻擊(Sql Injection),請使用參數的寫法。
            String SQLString = "Select * From test Where id = @id ";  // 注意到沒?連「單引號」都不可以出現
            SqlDataAdapter myAdapter = new SqlDataAdapter(SQLString, Conn);
            //== 參數必須在執行SQL指令的時候,寫在下方等待呼叫。不然程式會出錯。
                ////舊的寫法:
                //myAdapter.SelectCommand.Parameters.Add("@id", SqlDbType.Int, 4);
                //myAdapter.SelectCommand.Parameters["@id"].Value = TextBox1.Text;
                
                //新的寫法:合併在一起寫
                myAdapter.SelectCommand.Parameters.AddWithValue("@id", TextBox1.Text);

 

完整的範例可以參閱我的書本上集

 

.AddWithValue()方法,請看 msdn網站 。

他的範例就介紹了我上面的兩種作法,請擇一使用

http://msdn.microsoft.com/zh-tw/library/system.data.sqlclient.sqlparametercollection.addwithvalue(v=vs.110).aspx

 

如果您使用 OleDb或是 Odbc,請把參數寫成「?」符號 (後面不可以帶上參數名稱喔!只有一個 ?符號而已)

請參閱  http://msdn.microsoft.com/zh-tw/library/zxdcah9t(v=vs.110).aspx

 

下一篇文章:

[FAQ] ADO.NET 參數寫法 Parameter #2 -- SqlParameterCollection

 

FAQ -- 資料隱碼攻擊(SQL Injection)

 

 

http://www.dotblogs.com.tw/mis2000lab/Tags/SQL%20Injection/default.aspx (我以前的文章)

你的網站正在裸奔嗎?  http://blog.darkthread.net/post-2008-05-07-are-your-website-naked.aspx

 

我上課會解說,但幾個攻擊方式不便公開,

以免有心人拿到(學到)去測試「別人網站」

 
這本書有蒐集不少範例,推薦給您  
Beginning ASP.NET Security (0470743654) cover image

Beginning ASP.NET Security

Barry Dorrans
ISBN: 978-0-470-74365-2
Paperback
436 pages
March 2010
 
....................................................................................................................................................

另外,關於XSS攻擊(跨網站腳本攻擊,Cross-Sitws Script),可以看這本書

 XSS 網站安全技術與實務 : 防護解密剖析大進擊 (博碩) & Microsoft AntiXSS

 

防範 XSS的話,ASP.NET有提供 AntiXSS

檢查使用者輸入內容 - 以 AntiXss 做編碼
MICROSOFT ANTIXSS LIBRARY 3.1 UPGRADE 4.0  (KingKong Bruce)
msdn官方網站 -- System.Web.Security.AntiXss 命名空間

 

相關文章:

Microsoft Anti-XSS (Anti-Cross Site Scripting Library) 避免XSS攻擊

 

 

我將思想傳授他人, 他人之所得,亦無損於我之所有;

猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson

線上課程,遠距教學 (Web Form 49hr)  https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015

線上課程,遠距教學 (ASP.NET MVC 75hr)  https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab

ASP.NET MVC線上課程 第一天 免費看 (5.5小時) 

寫信給我,不要私訊 --  mis2000lab (at) yahoo.com.台灣  或  school (at) mis2000lab.net


ASP.NET遠距教學、線上課程(Web Form + MVC)。 第一天課程, "完整" 試聽。 

................   facebook社團   https://www.facebook.com/mis2000lab   ......................

................  YouTube (ASP.NET) 線上教學影片  https://www.youtube.com/channel/UC6IPPf6tvsNG8zX3u1LddvA/

 

Blog文章 "附的範例" 無法下載,請看 這裡 ...... https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download

請看我們的「售後服務」範圍(嚴格認定)

......................................................................................................................................................

...................................................................................................................................................... 

[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講

事先錄製好的影片,並非上課時側錄!   觀看影片時,有如我「一對一」跟您面對面講課

 

ASP.NET MVC 5 線上教學

累積時數約 75小時...... 第一天(5.5小時)完整內容,"免費"讓您評估