PHP 编程安全性小结
2015-01-24信息快讯网
PHP 编程安全性小结,这4个小技巧,大家可以参考一些成熟的cms程序。如dedecms等
规则 1:绝不要信任外部数据或输入关于 Web 应用程序安全性,必须认识到的第一件事是不应该信任外部数据。外部数据(outside data) 包括不是由程序员在 PHP 代码中直接输入的任何数据。在采取措施确保安全之前,来自任何其他来源(比如 GET 变量、表单 POST、数据库、配置文件、会话变量或 cookie)的任何数据都是不可信任的。
对用户输入进行清理的一个简单方法是,使用正则表达式来处理它。
规则 2:禁用那些使安全性难以实施的 PHP 设置
已经知道了不能信任用户输入,还应该知道不应该信任机器上配置 PHP 的方式。例如,要确保禁用 register_globals。如果启用了 register_globals,就可能做一些粗心的事情,比如使用 $variable 替换同名的 GET 或 POST 字符串。通过禁用这个设置,PHP 强迫您在正确的名称空间中引用正确的变量。要使用来自表单 POST 的变量,应该引用 $_POST['variable']。这样就不会将这个特定变量误会成 cookie、会话或 GET 变量。
要 检查的第二个设置是错误报告级别。在开发期间,希望获得尽可能多的错误报告,但是在交付项目时,希望将错误记录到日志文件中,而不是显示在屏幕上。为什么 呢?因为恶意的黑客会使用错误报告信息(比如 SQL 错误)来猜测应用程序正在做什么。这种侦察可以帮助黑客突破应用程序。为了堵住这个漏洞,需要编辑 php.ini 文件,为 error_log 条目提供合适的目的地,并将 display_errors 设置为 Off。
规则 3:如果不能理解它,就不能保护它
一些开发人员使用奇怪的语法,或者将语句组织得很紧凑,形成简短但是含义模糊的代码。这种方式可能效率高,但是如果您不理解代码正在做什么,那么就无法决定如何保护它。
规则 4:“纵深防御” 是新的法宝
即使使用 PHP regex 来确保 GET 变量完全是数字的,仍然可以采取措施确保 SQL 查询使用转义的用户输入。
纵深防御不只是一种好思想,它可以确保您不会陷入严重的麻烦。
php设计模式 Observer(观察者模式)
php设计模式 Singleton(单例模式)
php设计模式 Command(命令模式)
php设计模式 Template (模板模式)
php设计模式 Proxy (代理模式)
php session安全问题分析
php 安全过滤函数代码
PHP开发不能违背的安全规则 过滤用户输入
PHP的SQL注入实现(测试代码安全不错)
理解php Hash函数,增强密码安全
php下过滤html代码的函数 提高程序安全性
获取远程文件大小的php函数
基于Windows下Apache PHP5.3.1安装教程
PHP5.3.1 不再支持ISAPI
PhpMyAdmin中无法导入sql文件的解决办法
php实现的遍历文件夹下所有文件,编辑删除
处理php自动反斜杠的函数代码
php 多线程上下文中安全写文件实现代码
php 应用程序安全防范技术研究
不要轻信 PHP_SELF的安全问题
脚本安全的本质_PHP+MYSQL第1/3页
FleaPHP的安全设置方法
Win2003服务器安全加固设置--进一步提高服务器安全性