當我們訪問動態網頁時,Web 服務器會向數據訪問層發起 Sql 查詢請求,如果權限驗證通過就會執行 Sql 語句。
這種網站內部直接發送的Sql請求一般不會有危險,但實際情況是很多時候需要結合用戶的輸入數據動態構造 Sql 語句。
如果用戶輸入的數據被構造成惡意 Sql 代碼,Web 應用又未對動態構造的 Sql 語句使用的參數進行審查,則會帶來意想不到的危險。
SQL注入攻擊指的是通過構建特殊的輸入作為參數傳入Web應用程序,而這些輸入大都是SQL語法里的一些組合,通過執行SQL語句進而執行攻擊者所要的操作,其主要原因是程序沒有細致地過濾用戶輸入的數據,致使非法數據侵入系統。
根據相關技術原理,SQL注入可以分為平台層注入和代碼層注入。前者由不安全的數據庫配置或數據庫平台的漏洞所致;
后者主要是由於程序員對輸入未進行細致地過濾,從而執行了非法的數據查詢。
基於此,SQL注入的產生原因通常表現在以下幾方面:
①不當的類型處理;
②不安全的數據庫配置;
③不合理的查詢集處理;
④不當的錯誤處理;
⑤轉義字符處理不合適;
⑥多個提交處理不當。
sql注入危害
- 數據庫信息泄漏:數據庫中存放的用戶的隱私信息的泄露。
- 網頁篡改:通過操作數據庫對特定網頁進行篡改。
- 網站被掛馬,傳播惡意軟件:修改數據庫一些字段的值,嵌入網馬鏈接,進行掛馬攻擊。
- 數據庫被惡意操作:數據庫服務器被攻擊,數據庫的系統管理員帳戶被竄改。
- 服務器被遠程控制,被安裝后門。經由數據庫服務器提供的操作系統支持,讓黑客得以修改或控制操作系統。
- 破壞硬盤數據,癱瘓全系統。
sql注入解決方案
1.參數驗證
2.特殊字符過濾
3.使用參數化語句,不要拼接sql
4.編碼輸出
5.平台過濾
總之就是要做好過濾與編碼並使用參數化語句,這樣基本能夠解決sql注入漏洞
參考:
https://blog.csdn.net/qq_34638225/article/details/81269281
https://www.cnblogs.com/huzi007/p/6370732.html
