在asp.net中強烈建議通過參數來實現sql而不是sql拼接

來源:互聯網
上載者:User

在asp.net中強烈建議通過參數來實現sql而不是sql拼接,因為就算你每一個都過濾百密難有疏
比如:

SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
            SqlCommand comm=new SqlCommand("update tb1 set vName=@vName,iAge=@iAge where ID=@id",conn);
            SqlParameter parm1=new SqlParameter("@vName",SqlDbType.NVarChar,50);
            parm1.Value=((TextBox)e.Item.FindControl("name")).Text;
            SqlParameter parm2=new SqlParameter("@iAge",SqlDbType.Int);
            parm2.Value=((TextBox)e.Item.FindControl("age")).Text;
            SqlParameter parm3=new SqlParameter("@id",SqlDbType.Int);
            parm3.Value=this.DataGrid1.DataKeys[e.Item.ItemIndex];
            comm.Parameters.Add(parm1);
            comm.Parameters.Add(parm2);
            comm.Parameters.Add(parm3);
            conn.Open();
            comm.ExecuteNonQuery();
            conn.Close();

這樣的代碼看起來舒服而且又安全,何樂不為?

 

  所謂SQL注入式攻擊,就是攻擊者把SQL命令插入到Web表單的輸入欄位或頁面請求的查詢字串,欺騙伺服器執行惡意的SQL命令。在某些表單中,使用者輸入的內容直接用來構造(或者影響)動態SQL命令,或作為預存程序的輸入參數,這類表單特別容易受到SQL注入式攻擊。常見的SQL注入式攻擊過程類如:

  ⑴ 某個ASP.NET Web應用有一個登入頁面,這個登入頁面控制著使用者是否有權訪問應用,它要求使用者輸入一個名稱和密碼。

  ⑵ 登入頁面中輸入的內容將直接用來構造動態SQL命令,或者直接用作預存程序的參數。下面是ASP.NET應用構造查詢的一個例子:

  System.Text.StringBuilder query = new System.Text.StringBuilder(

  SELECT * from Users WHERE login = )

  .Append(txtLogin.Text).Append( AND password=)

  .Append(txtPassword.Text).Append();

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.