SQL注入攻擊

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安全
相關文章
相關標籤/搜索