C#-駭客-資料庫訪問-字串的攻擊和防禦

來源:互聯網
上載者:User

標籤:indicator   comm   while   增刪改查   ogr   update   cti   攻擊   hid   

C#中用基本的方法對資料庫進行增刪改查,會被駭客利用,寫入其他的代碼以實現對資料庫的資料進行其他的操作。例如:

對下列資料庫的某個資訊進行修改操作

修改代碼:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Data.SqlClient;namespace 攻擊_防禦{    class Program    {        static void Main(string[] args)        {            //建立 資料庫連接類            SqlConnection conn = new SqlConnection("server=.;database=Data0928;user=sa;pwd=asdf;");            //建立 資料庫操作類            SqlCommand cmd = conn.CreateCommand();            //一、顯示Users表中的所有資訊            cmd.CommandText = "select *from Users";            //在資料庫中執行操作            conn.Open();            SqlDataReader dr = cmd.ExecuteReader();            while (dr.Read())                Console.WriteLine(dr["ids"] + "\t" + dr["Username"] + "\t" + dr["password"] + "\t" + dr["nickname"] + "\t" + dr["sex"] + "\t" + dr["birthday"] + "\t" + dr["nation"] + "\t" + dr["class"] + "\t");            conn.Close();            //二、讓使用者選擇要修改的資料            Console.WriteLine();            Console.Write("請輸入要修改資料的使用者名稱:");            string uname = Console.ReadLine();            //在資料庫查詢有無此資訊            cmd.CommandText = "select *from Users where username=‘" + uname + "‘";            bool has = false;            conn.Open();            SqlDataReader dr1 = cmd.ExecuteReader();            if (dr1.HasRows)                has = true;            conn.Close();            //提示有無此資訊,是否進行修改            if (has)            {                Console.WriteLine("已查到此使用者資訊,請輸入修改後的資訊");                Console.Write("請輸入修改的使用者名稱:");                string xname = Console.ReadLine();                Console.Write("請輸入修改的密碼:");                string xpwd = Console.ReadLine();                Console.Write("請輸入修改的暱稱:");                string xnick = Console.ReadLine();                Console.Write("請輸入修改的性別:");                bool xsex = Convert.ToBoolean(Console.ReadLine());                Console.Write("請輸入修改的生日:");                DateTime xbir = Convert.ToDateTime(Console.ReadLine());                Console.Write("請輸入修改的民族:");                string xnation = Console.ReadLine();                Console.Write("請輸入修改的班級:");                string xcla = Console.ReadLine();                //修改資訊準備操作                cmd.CommandText = "update Users set username=‘" + xname + "‘,password=‘" + xpwd + "‘,nickname=‘" + xnick + "‘,sex=‘" + xsex + "‘,birthday=‘" + xbir + "‘,nation=‘" + xnation + "‘,class=‘" + xcla + "‘ where username=‘" + uname + "‘";                //在資料庫中執行操作                conn.Open();                int i0 = cmd.ExecuteNonQuery();                conn.Close();                //判斷是否修改成功                if (i0 > 0)                    Console.WriteLine("資料修改成功!");                else                    Console.WriteLine("資料修改失敗!");            }            else                Console.WriteLine("查無此資訊。");            Console.ReadLine();        }    }}
對資料庫資料進行修改操作

修改後資料庫資料:

=====================================================================================================

如何對資料庫進行字串攻擊?

此時資料庫中資料全部被刪除,為什嗎?

在資料庫中輸入與修改時相同的代碼試試

資料庫讀取到了“delete from Users”字串,並且它之後的所有代碼被“--”注釋掉了,並不會執行,所有資料庫執行了delete語句,刪除了資料庫所有資訊

=====================================================================================================

針對以上情況,如何防禦資料庫被修改?——預留位置

update Users set 後的語句用預留位置代替,比如:set username=‘"+zhangsan+"‘,password=‘"+asdf+"‘ 用set [email protected],[email protected]

代替時,等號後面的單引號也去掉

執行cmd.Parameters.Clera();語句清空集合,然後進行添加,指定預留位置的意義

 再次進行攻擊

資料庫的結果為

資料庫資料並沒有刪掉,而刪除語句作為字串被預留位置帶入資料庫中,成功防禦了字串的攻擊

C#-駭客-資料庫訪問-字串的攻擊和防禦

相關文章

聯繫我們

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