對于web應用來說,sql注入攻擊無疑是首要防範的安全問題,系統底層對于資料安全方面本身進行了很多的處理和相應的防範機制,例如:
$user = m("user"); // 執行個體化user對象
$user->find($_get["id"]);
即便使用者輸入了一些惡意的id參數,系統也會強制轉換成整型,避免惡意注入。這是因為,系統會對資料進行強制的資料類型檢測,并且對資料來源進行資料格式轉換。而且,對于字元串類型的資料,thinkphp都會進行escape_string處理(real_escape_string,mysql_escape_string)。
通常的安全隐患在于你的查詢條件使用了字元串參數,然後其中一些變量又依賴由用戶端的使用者輸入,要有效的防止sql注入問題,我們建議:
查詢條件盡量使用數組方式,這是更為安全的方式;
如果不得已必須使用字元串查詢條件,使用預處理機制(3.1版本新增特性);
開啟資料字段類型驗證,可以對數值資料類型做強制轉換;(3.1版本開始已經強制進行字段類型驗證了)
使用自動驗證和自動完成機制進行針對應用的自定
最新内容請見作者的github頁:http://qaseven.github.io/