亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

利用“參數賦值”防范SQL注入漏洞攻擊

2024-07-21 02:50:01
字體:
來源:轉載
供稿:網友
利用“參數賦值”防范SQL注入漏洞攻擊

<<年輕,無權享受》————送給每一個看到此文的同僚們

在這無精打采的炎夏

我躺在陽臺上房東的舊沙發

回想幾個月來遇到的問題

我不禁內心開始慌張喘著粗氣

還有大把時間去打拼 沒有到只能總結過去的年紀

我可不想現在是束縛的 我了解自己應該是自由的

美好都被我親手搞砸 我明白我沒有時間貪去揮霍了

我可不想老了以后 自己是孤獨的

年少的時候 沒理由去享受

等到你老了 頭發掉落了

牽著老伴 坐在公園的長凳 靜看人閑花落;

————————————————————————————————————————————————————————————————————————

冗言不再贅述了,直接開拔進入我們今天的主題

先不講原理,首先我給大家引出一個經典案例,利用sql語句我們來實現注冊和登陸的窗體應用程序,兩個窗體應用程序做好之后,我們來運行看看到底程序存在哪些漏洞,我們先點擊“注冊”結果如圖所示:

再點擊 登陸按鈕 結果如圖所示:

我們會驚奇的發現注冊時不輸入字符,也能注冊成功;登錄時我們沒有輸入數據庫里保存的賬戶和密碼,而是輸入hello' or 1=1 -- 卻也能登陸成功??吹竭@,你們當中有人肯定會說。這有什么好奇怪的,你給他們的屬性設置為null了嗎?但是我要跟你們說得是,其實不然,我們知道這樣的結果并不是我們想要的,那如何去解決呢?有人會說這容易,去判斷就行了呀?然而事實果如你說的容易嗎?數據庫是海量存儲的,里面的數據包羅萬象,按照你的做法你要去一個個判斷,那得判斷到何年馬月啊?這就是我們看到的SQL注入的漏洞攻擊,所以在這里就要引出我們今天的話題,如何來繞過SQL注入的漏洞攻擊呢?

好了,接下來我們就要運用“參數賦值”的方法來防范SQL注入漏洞攻擊:語法:運用@+參數 (@表示在SQL語句中申明一個變量來替代),SqlParameter

具體注冊代碼如下所示:

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Data.SqlClient;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace 登錄注冊{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }               PRivate void btnReg_Click(object sender, EventArgs e)        {            //object num=100;            //SqlParameter sp=(SqlParameter)num;                     string connStr = "Data Source=.;Initial Catalog=MySchoolMoreData;Integrated Security=True";                    using(SqlConnection conn=new SqlConnection(connStr))            {                 conn.Open();                             string sql = "insert into [user] values(@name,@pwd,@email,@phone)";                //SqlParameter就是我們需要運用到的關鍵字,通過它我們對參數賦值;注意他返回的是一個數組 所以我們要用數組對象來接收               //@ 可寫可不寫                SqlParameter[] ps = {                                     new SqlParameter("name",txtName.Text.Trim()),                                    new SqlParameter("pwd",txtPwd.Text.Trim()),                                    new SqlParameter("email",string.IsNullOrEmpty(txtEmail.Text.Trim())?DBNull.Value:(object)txtEmail.Text.Trim()),                                    new SqlParameter("phone",string.IsNullOrEmpty(txtPhone.Text.Trim())?DBNull.Value:(object)txtPhone.Text.Trim())                                    };                          SqlCommand command = new SqlCommand(sql, conn);                command.Parameters.AddRange(ps);                         int num = command.ExecuteNonQuery();                          MessageBox.Show(num == 1 ? "ok" : "no ok");            }        }        private void btnLog_Click(object sender, EventArgs e)        {            FrmLogin frm = new FrmLogin();            frm.Show();        }    }}

登陸事件代碼如圖:

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using System.Data.SqlClient;namespace c01作業_登錄注冊{    public partial class FrmLogin : Form    {        public FrmLogin()        {            InitializeComponent();        }        private void btnLogin_Click(object sender, EventArgs e)        {                  string connStr = "Data Source=.;Initial Catalog=MySchoolMoreData;Integrated Security=True";                   using (SqlConnection conn = new SqlConnection(connStr))            {                              conn.Open();                //1.創建命令語句 .使用了參數占位。以后服務器在執行這條sql命令的時候,就需要你也傳遞了對應名稱的參數                string sql = string.Format("select COUNT(*) from [User] where UserName=@name and Pass=@pwd");                //2.創建出對應的參數,以后服務器執行命令的時候,會來找@name參數值                SqlParameter p = new SqlParameter("@name", txtName.Text.Trim());                //@可以省略,名稱也不區分大小寫,但是字符的組成要一樣                SqlParameter p2 = new SqlParameter("pwd",txtPwd.Text.Trim());                //創建命令對象                SqlCommand command = new SqlCommand(sql, conn);                //3.同時需要將配套的參數對象傳遞給服務器來使用                command.Parameters.Add(p);                command.Parameters.Add(p2);                                          int num=Convert.ToInt32(command.ExecuteScalar());                //判斷                if (num > 0)                {                    MessageBox.Show("登錄成功");                }                else                {                    MessageBox.Show("登錄失敗");                }            }        }    }}

使用參數賦值方法后就可以防范SQL注入的漏洞攻擊了,當我們再次輸入空字符的時候就會報如下錯誤:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品国产91久久久久久久久| 欧美视频二区36p| 久久在精品线影院精品国产| 91久久精品国产| 18久久久久久| 国产精品无码专区在线观看| 国产精自产拍久久久久久蜜| 亚洲精品久久久久国产| 国产一区二区三区视频免费| 高清亚洲成在人网站天堂| 亚洲成人三级在线| 欧美电影免费观看| 亚洲乱码一区av黑人高潮| 国产一区二区三区在线观看网站| 久久精彩免费视频| 亚洲网站在线看| 九九九久久久久久| 国产ts人妖一区二区三区| 亚洲精品欧美一区二区三区| 久久久久久久久网站| 播播国产欧美激情| 亚洲精品av在线播放| 精品国内自产拍在线观看| 国产91免费观看| 国产欧美精品日韩| 中文字幕亚洲专区| 亚洲一区二区三区在线免费观看| 日韩在线观看av| 亚洲欧美国产高清va在线播| 91精品国产自产91精品| 亚洲国产天堂久久综合网| 久久国产精彩视频| 欧美在线一区二区三区四| 亚洲国产欧美一区二区三区同亚洲| 日韩av电影手机在线| 久久夜色撩人精品| 国产精品免费一区豆花| 精品福利在线看| 主播福利视频一区| 在线看片第一页欧美| 另类少妇人与禽zozz0性伦| 国产视频福利一区| 欧美一区二三区| 欧美成人精品一区二区三区| 午夜精品免费视频| 成人444kkkk在线观看| 日韩精品欧美激情| 欧美交受高潮1| 91九色蝌蚪国产| 亚洲欧洲午夜一线一品| 一本久久综合亚洲鲁鲁| 日韩有码在线播放| 久久久久久久久久久成人| 欧美www视频在线观看| 日韩在线观看电影| 91高清免费视频| 久久精品国产免费观看| 精品久久久久久久久国产字幕| 欧美精品成人91久久久久久久| 国产精品丝袜久久久久久不卡| 日韩人体视频一二区| 日韩有码片在线观看| 亚洲第一精品久久忘忧草社区| 91免费看国产| 国产日本欧美一区| 久久久久久亚洲精品中文字幕| 日韩在线观看免费高清完整版| 久久精品在线视频| 色狠狠av一区二区三区香蕉蜜桃| 成人黄色免费网站在线观看| 亚洲免费影视第一页| 1769国内精品视频在线播放| 国产成人精品久久亚洲高清不卡| 久热99视频在线观看| 日韩在线视频一区| 亚洲成人黄色在线观看| www高清在线视频日韩欧美| 欧美极品少妇xxxxx| 国产精品毛片a∨一区二区三区|国| 国产一区二区激情| 成人免费观看49www在线观看| 亚洲国产高清福利视频| 亚洲人午夜色婷婷| 亚洲精品二三区| 国产日韩视频在线观看| 精品久久久久久国产| 国产精品999| 中文字幕亚洲第一| 欧美色视频日本高清在线观看| 亚洲第一网站男人都懂| 国产精品久久久久久超碰| 亚洲r级在线观看| 久久夜色精品亚洲噜噜国产mv| 黑人巨大精品欧美一区二区一视频| 深夜福利91大全| 日韩最新av在线| 国产日韩在线观看av| 国产91精品网站| 欧美猛男性生活免费| 中日韩美女免费视频网站在线观看| 国产情人节一区| 在线亚洲午夜片av大片| 欧美成人sm免费视频| 成人在线一区二区| 欧美精品久久久久a| 91经典在线视频| 国产欧美va欧美va香蕉在线| 久久91亚洲精品中文字幕| 国产精品99蜜臀久久不卡二区| 91美女片黄在线观看游戏| 91精品国产高清| 成人激情视频网| 亚洲电影免费观看高清| 欧美成人精品三级在线观看| 亚洲社区在线观看| 97国产精品视频人人做人人爱| 国产精品久久久久久久久久免费| 国产午夜精品视频免费不卡69堂| 亚洲女成人图区| 国产午夜精品全部视频在线播放| 久久综合色88| 国产精品观看在线亚洲人成网| 久久精品91久久久久久再现| 2019中文字幕免费视频| 国产成人高潮免费观看精品| 日本精品视频在线观看| 亚洲免费影视第一页| 免费成人高清视频| 久久在精品线影院精品国产| 亚洲国内高清视频| 在线免费看av不卡| 中文字幕精品一区二区精品| 久久成人精品视频| 欧美成人在线网站| 91久久久久久久久久久| 精品国产一区二区三区久久久狼| 欧美日韩另类视频| 国产精品色午夜在线观看| 国产欧美日韩丝袜精品一区| 日韩在线视频观看| 亚洲r级在线观看| 欧美激情亚洲综合一区| 欧美精品在线网站| 色老头一区二区三区| 5566成人精品视频免费| 国产成人福利网站| 伊人一区二区三区久久精品| 欧美一级淫片videoshd| 欧美成人精品一区| 欧美一级高清免费| 国产精品自拍偷拍| 亚洲成人1234| 亚洲已满18点击进入在线看片| 欧美激情精品久久久久久免费印度| 国产一区二区三区欧美| www.国产精品一二区| 亚洲人成电影网站| 亚洲免费精彩视频| 国产精品久久久久久影视| 日本精品视频在线| 亚洲成**性毛茸茸| 精品亚洲一区二区三区四区五区| 久久人人97超碰精品888| 成人a在线观看|