安全建议

在日常开发中,我们需要注意一些PHP的开发建议:

过滤

在SpeedPHP框架的数据库功能中,数组作为参数的情况下,输入的值都会经过“防SQL注入”的过滤。
而在字符串参数和SQL直接运行的情况下,开发者应该使用参数绑定方式对输入的参数进行绑定,以保证数据库安全。

新版框架进行任何的数据库操作都可以通过参数绑定的方式来操作,请使用该方式来编程以确保数据库安全。

在默认情况下,Sp的模板引擎会将显示到页面的变量,均自动进行htmlspecialchars的过滤,以防止XSS攻击。但如果是用户模板函数等方式输出,并非直接输出变量,则需要考虑是否需要进行htmlspecialchars过滤。

用户登录

建议加入验证码机制和登录失败次数限制,以保证无法用程序来进行登录密码的穷举。另外在给用户设置密码时,也建议不能使用太简单的密码。

数据库存储密码时,不应该简单对密码MD5加密存储,而建议用复合字段MD5或多段MD5。以便在数据库暴露情况下,密码仍是安全的,不被穷举破解的。

如md5(用户名+密码)的方式,或者是md5(用户名+md5(密码))的方式来存储密码。

加入后台日志机制,记录用户的关键操作以供分析。

系统管理

应定期对系统进行安全检查,检查日志等。

部署时,建议设置“文件夹755、文件644、上传和临时目录设置为777并不可运行程序”。

部署时,启用部署模式,以保证系统调试信息不会出现在浏览器上。

部署时,protected目录下任何文件,均不能通过浏览器访问,如view目录中的.html文件,必须通过模板引擎display后才能访问,保证模板内代码不泄漏。

建议使用单一入口(index.php),以最大限度保证系统安全。