SQL Injection 常是資料庫被入侵的原兇
SQL Injection是很容易對資料庫造成危害的,茲事體大,
如果你是PROGRAMER,不認識SQL Injection,請馬上GOGGLE搜尋SQL Injection
可能造成的傷害
1.資料表中的資料外洩,例如個人機密資料,帳戶資料,密碼等。
2.資料結構被駭客探知,得以做進一步攻擊(例如SELECT * FROM sys.tables)。
3.資料庫伺服器被攻擊,系統管理員帳戶被竄改(例如ALTER LOGIN sa WITH PASSWORD='xxxxxx')。
4.取得系統較高權限後,有可能得以在網頁加入惡意連結以及XSS。
5.經由資料庫伺服器提供的作業系統支援,讓駭客得以修改或控制作業系統(例如xp_cmdshell "net stop iisadmin"可停止伺服器的IIS服務)。
6.破壞硬碟資料,癱瘓全系統(例如xp_cmdshell "FORMAT C:")。
避免的方法
1.在設計應用程式時,完全使用參數化查詢(Parameterized Query)來設計資料存取功能。
2.在組合SQL字串時,先針對所傳入的參數作字元取代(將單引號字元取代為連續2個單引號字元)。
3.如果使用PHP開發網頁程式的話,亦可開啟PHP的魔術引號(Magic quote)功能(自動將所有的網頁傳入參數,將單引號字元取代為連續2個單引號字元)。
4.其他,使用其他更安全的方式連接SQL資料庫。例如已修正過SQL資料隱碼問題的資料庫連接元件,例如ASP.NET的SqlDataSource物件或是 LINQ to SQL。
5.使用SQL防資料隱碼系統。