1. 程式人生 > >預防SQL注入 學習筆記

預防SQL注入 學習筆記

SQL注入是個老話題,前一段中招了,所以總結了些注意事項,可以快速簡單的幫助防止大部分的注入攻擊

個人覺得引數化和資料庫許可權是相對簡單和有效的方案。

1Domain Driver Design

一種設計思想,強調識別可信任和不可信任呼叫,確認安全防範邊界,保證這個邊界範圍內的操作是可靠的,確保不可靠的呼叫都在邊界外。

比如一個登陸操作,可能涉及對字元或密碼合法性驗證,再會有登陸驗證,安全邊界應該放到字元和密碼合法性這層,那麼所有的登陸呼叫操作都應該先合法性驗證,在登陸驗證。

2、引數化語句:

注入是在引數傳入過程,加入特別語句,以改變sql語義,達到攻擊目的。

而引數化是將sql語義與引數分開。這個一般現有的資料庫介面都提供這種訪問方式,比如

prepare.

程式碼層的引數化

儲存過程層的引數化

       HTML5的引數化

3、輸入驗證

對明確有規範或範圍的引數,進行格式化或邊界校驗。

白名單

黑名單

4NOSQL的注入防範也要注意。

仍然用引數化封裝功能,避免動態字串拼接。

5、資料庫中敏感資訊隱藏

比如表名,useraccount等,改成其他的

比如列明:passwdpwdpassword

平臺方面:

web應用防火牆(ModSecurity

入侵檢測

錯誤語句告警。

確保資料庫安全:

限制資料庫不必要的功能,

清除預設賬戶

明確資料庫帳戶許可權,控制寫許可權,

最小化api的帳號許可權

web服務

sql

服務分離部署

隱藏錯誤提示

禁用wsdl

快速應對方案

執行時保護

確保資料庫安全

額外的部署