WEB三大攻擊之—SQL隱碼攻擊與防護
From:https://www.daguanren.cc/post/sql-injection.html
SQL隱碼攻擊的定義與誘因
定義
SQL攻擊(英語:SQL injection),簡稱注入攻擊,是發生於應用程式之資料庫層的安全漏洞。簡而言之,是在輸入的字串之中注入SQL指令,在設計不良的程式當中忽略了檢查,那麼這些注入進去的指令就會被資料庫伺服器誤認為是正常的SQL指令而執行,因此遭到破壞或是入侵。
只要是支援批處理SQL指令的資料庫伺服器,都有可能受到此種手法的攻擊。
誘因
在應用程式中若有下列狀況,則可能應用程式正暴露在SQL Injection的高風險情況下:
- 在應用程式中使用字串聯結方式組合SQL指令。
- 在應用程式連結資料庫時使用許可權過大的賬戶(例如很多開發人員都喜歡用最高許可權的系統管理員賬戶(如常見的root,sa等)連線資料庫)。
- 在資料庫中開放了不必要但權力過大的功能(例如在Microsoft SQL Server資料庫中的xp_cmdshell延伸預存程式或是OLE Automation預存程式等)
- 太過於信任使用者所輸入的資料,未限制輸入的字元數,以及未對使用者輸入的資料做潛在指令的檢查。
下面的GIF展示的是SQL隱碼攻擊的示意:
程式碼解釋
假設某個網站的登入驗證的SQL查詢程式碼為
SELECT * FROM `user` WHERE (username = 'username') and (password = 'password');
如果惡意將username和password傳入的值設定為:
username = '1' OR '1'='1';
password = '1' OR '1'='1';
即為:
SELECT * FROM user WHERE (username = '1' OR '1'='1') and (password = '1' OR '1'='1');
由於OR 1=1 總是為真(true),原SQL語句等同於:
SELECT * FROM user;
SQL隱碼攻擊的危害與防護
危害
- 資料表中的資料外洩,例如個人機密資料,賬戶資料,密碼等。
- 資料結構被黑客探知,得以做進一步攻擊(例如SELECT * FROM sys.tables)。
- 資料庫伺服器被攻擊,系統管理員賬戶被竄改(例如ALTER LOGIN sa WITH PASSWORD='xxxxxx')。
- 獲取系統較高許可權後,有可能得以在網頁加入惡意連結、惡意程式碼以及XSS等。
- 經由資料庫伺服器提供的作業系統支援,讓黑客得以修改或控制作業系統(例如xp_cmdshell "net stop iisadmin"可停止伺服器的IIS服務)。
- 破壞硬碟資料,癱瘓全系統(例如xp_cmdshell "FORMAT C:")。
防護
- 在設計應用程式時,完全使用引數化查詢(Parameterized Query)來設計資料訪問功能。
- 在組合SQL字串時,先針對所傳入的引數作字元取代(將單引號字元取代為連續2個單引號字元)。
- 使用其他更安全的方式連線SQL資料庫。例如已修正過SQL隱碼攻擊問題的資料庫連線元件。
- 使用SQL防注入框架開發。
參考資料
- 維基百科SQL隱碼攻擊
- w3schools的SQL_Injection
本文連結:https://www.daguanren.cc/post/sql-injection.html
相關文章
- 反恐精英之動態SQL和SQL隱碼攻擊-SQL隱碼攻擊-防衛SQL隱碼攻擊-驗證檢查SQL
- 反恐精英之動態SQL和SQL隱碼攻擊-SQL隱碼攻擊-防衛SQL隱碼攻擊-繫結變數SQL變數
- 預防SQL隱碼攻擊SQL
- SQL隱碼攻擊原理是什麼?如何防範SQL隱碼攻擊?SQL
- 如何做好防護SQL隱碼攻擊漏洞SQL
- 反恐精英之動態SQL和SQL隱碼攻擊-SQL隱碼攻擊-防衛SQL隱碼攻擊-顯式格式化模型SQL模型
- NET防SQL隱碼攻擊方法SQL
- 反恐精英之動態SQL和SQL隱碼攻擊-SQL隱碼攻擊SQL
- 反恐精英之動態SQL和SQL隱碼攻擊-SQL隱碼攻擊-SQL隱碼攻擊技術-語句注入SQL
- 反恐精英之動態SQL和SQL隱碼攻擊-SQL隱碼攻擊-SQL隱碼攻擊技術-語句修改SQL
- SQL隱碼攻擊的分類與防範SQL
- 預防SQL隱碼攻擊筆記SQL筆記
- SQL隱碼攻擊SQL
- WEB攻擊與防禦Web
- SQL隱碼攻擊式攻擊掃描器SQL
- 反恐精英之動態SQL和SQL隱碼攻擊-SQL隱碼攻擊-SQL隱碼攻擊技術-資料型別轉換SQL資料型別
- XSS與SQL隱碼攻擊SQL
- 網站漏洞修復SQL隱碼攻擊防護辦法網站SQL
- MYSQL SQL隱碼攻擊MySql
- 【SQL隱碼攻擊原理】SQL
- 防止SQL隱碼攻擊SQL
- SQL隱碼攻擊(一)SQL
- 【SQL Server】--SQL隱碼攻擊SQLServer
- 攻擊JavaWeb應用[3]-SQL隱碼攻擊[1]JavaWebSQL
- 攻擊JavaWeb應用[4]-SQL隱碼攻擊[2]JavaWebSQL
- WAF攻防之SQL隱碼攻擊篇SQL
- Akamai:65.1%的Web應用程式攻擊來自SQL隱碼攻擊AIWebSQL
- 六個建議防止SQL隱碼攻擊式攻擊SQL
- SQL隱碼攻擊語句SQL
- pikachu-SQL隱碼攻擊SQL
- SQL隱碼攻擊導圖SQL
- SQL隱碼攻擊問題SQL
- SQL隱碼攻擊的例子SQL
- ZMLCMS-SQL隱碼攻擊SQL
- SQL隱碼攻擊演練SQL
- 淺談DDOS攻擊攻擊與防禦
- ASP上兩個防止SQL隱碼攻擊式攻擊FunctionSQLFunction
- Java審計之SQL隱碼攻擊篇JavaSQL