SQL注入-預防


輸入驗證:

  • 檢查用戶輸入的合法性,確信輸入的內容只包含合法的數據。數據檢查應當在客戶端和服務器端都執行服務器端驗證,是為了彌補客戶端驗證機制脆弱的安全性。
  • 輸入驗證最好使用“白名單”校驗的方式。

輸入轉義:

  • 每個DBMS都有一個字符轉義機制來告知DBMS輸入的是數據而不是代碼,如果將用戶的輸入都進行轉義,那么DBMS就不會混淆數據和代碼,也不會出現SQL注入了。

最小權限法:

  • 把每個數據庫用戶的權限盡可能縮小,在給用戶權限時是基於用戶需要什么樣的權限。而不是用戶不需要什么樣的權限。

參數化查詢:

  • 在使用參數化查詢的情況下,數據庫服務器不會將參數的內容視為SQL指令的一部分來處理,而是在數據庫完成SQL指令的編譯后,才套用參數運行,因此就算參數中含有惡意的指令,由於已經編譯完成,就不會被數據庫所運行。(這個方法目前被視為最有效可預防SQL注入攻擊的防御方式)

錯誤消息處理:

  • 防范SQL注入,還要避免出現一些詳細的錯誤消息,這些錯誤消息可能會暴露一些敏感信息被攻擊者利用。

加密處理:

  • 將用戶登錄名稱,密碼等數據加密保存。加密用戶輸入的數據,然后再將它與數據庫中保存的數據比較,這相當於對用戶輸入的數據進行了“消毒”處理,用戶輸入的數據不再對數據庫有任何特殊的意義,從而防止了攻擊者注入的SQL命令。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM