SQL注入(SQLi)是一種注入攻擊,可以執(zhí)行惡意SQL語(yǔ)句。它通過(guò)將任意SQL代碼插入數(shù)據(jù)庫(kù)查詢,使攻擊
者能夠完全控制Web應(yīng)用程序后面的數(shù)據(jù)庫(kù)服務(wù)器。攻擊者可以使用SQL注入漏洞繞過(guò)應(yīng)用程序安全措施;可
以繞過(guò)網(wǎng)頁(yè)或Web應(yīng)用程序的身份驗(yàn)證和授權(quán),并檢索整個(gè)SQL數(shù)據(jù)庫(kù)的內(nèi)容;還可以使用SQL注入來(lái)添加,修
改和刪除數(shù)據(jù)庫(kù)中的記錄。
如何防止SQL注入攻擊?
不要使用動(dòng)態(tài)SQL避免將用戶提供的輸入直接放入SQL語(yǔ)句中;最好使用準(zhǔn)備好的語(yǔ)句和參數(shù)化查詢,這樣更安全。
不要將敏感數(shù)據(jù)保留在純文本中
加密存儲(chǔ)在數(shù)據(jù)庫(kù)中的私有/機(jī)密數(shù)據(jù);這樣可以提供了另一級(jí)保護(hù),以防攻擊者成功地排出敏感數(shù)據(jù)。
限制數(shù)據(jù)庫(kù)權(quán)限和特權(quán)
將數(shù)據(jù)庫(kù)用戶的功能設(shè)置為最低要求;這將限制攻擊者在設(shè)法獲取訪問(wèn)權(quán)限時(shí)可以執(zhí)行的操作。
避免直接向用戶顯示數(shù)據(jù)庫(kù)錯(cuò)誤