## 安全建議
在日常開發中,我們需要注意一些PHP的開發建議:
**過濾**
在SpeedPHP框架的數據庫功能中,數組作為參數的情況下,輸入的值都會經過“防SQL注入”的過濾。
而在字符串參數和SQL直接運行的情況下,開發者應該使用參數綁定方式對輸入的參數進行綁定,以保證數據庫安全。
> 新版框架進行任何的數據庫操作都可以通過參數綁定的方式來操作,請使用該方式來編程以確保數據庫安全。
在默認情況下,Sp的模板引擎會將顯示到頁面的變量,均自動進行htmlspecialchars的過濾,以防止XSS攻擊。但如果是用戶模板函數等方式輸出,并非直接輸出變量,則需要考慮是否需要進行htmlspecialchars過濾。
**用戶登錄**
建議加入驗證碼機制和登錄失敗次數限制,以保證無法用程序來進行登錄密碼的窮舉。另外在給用戶設置密碼時,也建議不能使用太簡單的密碼。
數據庫存儲密碼時,不應該簡單對密碼MD5加密存儲,而建議用復合字段MD5或多段MD5。以便在數據庫暴露情況下,密碼仍是安全的,不被窮舉破解的。
> 如md5(用戶名+密碼)的方式,或者是md5(用戶名+md5(密碼))的方式來存儲密碼。
加入后臺日志機制,記錄用戶的關鍵操作以供分析。
**系統管理**
應定期對系統進行安全檢查,檢查日志等。
部署時,建議設置“文件夾755、文件644、上傳和臨時目錄設置為777并不可運行程序”。
部署時,啟用部署模式,以保證系統調試信息不會出現在瀏覽器上。
部署時,protected目錄下任何文件,均不能通過瀏覽器訪問,如view目錄中的.html文件,必須通過模板引擎display后才能訪問,保證模板內代碼不泄漏。
建議使用單一入口(index.php),以最大限度保證系統安全。
- 自述
- 一、入門教程
- 1. 開始使用SpeedPHP
- 2. Hello World
- 3. 理解MVC
- 4. 制作留言本
- 5. 數據操作及Ajax
- 二、框架概述
- 1. 特色
- 2. 版權及開源協議
- 3. 開發環境
- 4. 編碼版本
- 5. SAE平臺使用
- 三、開發指南
- 1. 開發流程
- 2. 架構及擴展
- 3. 程序目錄結構
- 4. 命名建議
- 5. 安全建議
- 6. 用戶自定義
- 7. 模塊modules
- 四、訪問交互
- 1. 表單提交及數據獲取
- 2. session/cookie的使用
- 3. 偽靜態及URL跳轉
- 4. 使用frameset
- 5. 模板引擎特性和使用方法
- 五、數據操作
- 1. 建立數據模型類
- 2. 數據操作教程
- 3. 分頁
- 4. SQL支持及關聯實現
- 5. 多數據庫、主從庫配置