學生信息管理係統--SQL注入
當你在登陸學生管理係統的時候,添加的用戶名若和你數據庫中的數據不符時,就會彈出一個窗體,告訴你沒有這個用戶;但是當你在用戶名中輸入數字或者字母外加英文狀態下的單引號,比如:“a'”,“'or 1=1#”
然後你再運行的話,就會彈出下麵的窗體
這就是SQL注入,百度上給出的定義是:通過把SQL命令插入到Web表單遞交或輸入域名或頁麵請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。
在我們做學生管理係統的時候,在登入窗體中有這麼一段語句
兩個單引號括起來的部分是判斷輸入的用戶名是否和數據庫中一致,但你輸入“a'”時,就會在兩個單引號之間添加了一個單引號,結果可想而知,數據庫無法連接,所以就無法登陸。
解決方法:
1、將txtUserName.text的文本框替換成ComboBox的下拉式的控件,直接從數據庫中提取用戶名,缺點就是這樣造成用戶名泄露!
2、加強對用戶輸入的驗證。一些關鍵字直接給他過濾掉,比如drop 、datebase、delete,and,--,“’” 等一些關鍵字,寫個方法直接過濾掉~!把單引號替換成兩個單引號!數值型要強製轉換!!!
3、在編寫SQL語句時,使用參數化的語句來傳遞用戶輸入的變量,也就是說,用戶的輸入絕對不能夠直接被嵌入到SQL語句中。
4、限製表單或查詢字符串輸入的長度。
5、將用戶登入名稱、密碼等數據加密保存。加密用戶輸入的數據,然後再將它與數據庫中保存的數據比較,這就相當於對用戶輸入的數據進行了“消毒”處理。
最後更新:2017-04-03 16:48:59
上一篇:
VS2010與Qt5.1.0集成(非源碼方式)
下一篇:
架構師在敏捷中是豬還是雞
Flink -- Failover
安全雲網關:利用互聯網對抗網絡攻擊
撿到iPhone7怎麼解鎖?蘋果6splus解鎖密碼忘記導致手機被鎖定該怎麼辦
筆記:Ceph: A Scalable, High-Performance Distributed File System
London Book Fair to focus on China
深入淺出了解 JavaScript 中的 this
ibatis調用Oracle中的存儲過程和function
Android開發8——利用pull解析器讀寫XML文件
智能眼鏡上可否能有“MIUI”?
你值得了解的 10 個有趣的 Linux 命令行小技巧