## 安全建议
在日常开发中,我们需要注意一些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. 多数据库、主从库配置