WEB站點天天都會遇到各類各樣的攻擊,除了作好服務層的方法外咱們還要作好應用層的防範。數據庫
SQL注入攻擊原理
- 攻擊者在form表中(含post和get請求)輸入SQL命令繞過簡單驗證,欺騙服務器執行惡意的SQL語句
- 開發人員直接使用未通過數據校驗及字符過濾的方式來執行SQL語句,也就是手寫SQL語句且不對數據進行校驗
常見的SQL注入攻擊示例
- 登錄表單中須要用戶輸入 用戶名 和 密碼, 開發人員校驗登錄是使用 相似以下 SQL 語句的
-
'SELECT * from Users WHERE login = ' . $username . ' AND password = ' . $password;安全
- 攻擊者在用戶名字和密碼輸入框中輸入'或'1'='1之類的內容用來更改SQL語句執行的真實命令,請求服務器後,真正執行的代碼以下
-
SELECT * from Users WHERE login = '' or '1'='1' AND password = '' or '1'='1';服務器
- 至此就成功的繞過了數據庫的權限校驗了,成功的得到了WEN站點的權限
- 一旦攻擊者一次攻擊成功且得知網站如此薄弱後,會增強其餘攻擊手段,例如:
- 新增或修改、刪除數據庫表及表內數據
- 跨站攻擊同服務器的其餘網站、數據庫等
- 經過SQL語句執行更多的權限
防範方法
- 登錄校驗添加更多的校驗
- 作好站點數據庫權限的分配,避免涉及到了其餘的數據庫及站點
- 校驗時過濾特殊符號、且檢查數據類型並使用預處理語句
總結
- 開發過程當中不只要注意開發效率及WEB性能還須要注意WEB安全