PHP防注入之程序里的敏感信息
发布:smiling 来源: PHP粉丝网 添加日期:2014-08-22 14:10:58 浏览: 评论:0
php安全之一的PHP防注入是我们程序员必须了解与撑握的一项技术了,下面我来给各位同学介绍对于我们程序里的敏感信息的一些安全做法.
简单点来说就是你不想让别人知道的信息,比如说数据库的地址,用户名,密码等等,此类信息往往知道的人越少越好.
通常,PHP程序里的配置文件大致如下所示:
- <?php
- return array(
- 'database' => array(
- 'host' => '192.168.0.1',
- 'user' => 'administrator',
- 'password' => 'e1bfd762321e409cee4ac0b6e841963c',
- ),
- );
- ?>
有时候出于某些原因,比如说代码审查,亦或者合作开发等等,第三方需要获取代码版本仓库的读权限,一旦授权,数据库的地址,用户名,密码等敏感信息就暴露了,当然也可以不在代码版本仓库里保存配置文件,取而代之是撰写文档进行说明,但我不喜欢这样的方法,因为如此一来,代码本身是不完整的.
如何解决此类问题呢?最直接的方法是把敏感信息从代码中拿掉,换个地方保存,具体保存到哪里呢?有很多选择,比如说通过nginx的fastcgi_param来设置,代码如下:
fastcgi_param DATABASE_HOST 192.168.0.1;
fastcgi_param DATABASE_USER administrator;
fastcgi_param DATABASE_PASSWORD e1bfd762321e409cee4ac0b6e841963c;
经过这样的映射后,我们的代码就不会直接包含敏感信息了,代码如下:
- <?php
- return array(
- 'database' => array(
- 'host' => $_SERVER['DATABASE_HOST'],
- 'user' => $_SERVER['DATABASE_USERNAME'],
- 'password' => $_SERVER['DATABASE_PASSWORD'],
- ),
- );//phpfensi.com
- ?>
此外,还可以通过php-fpm的env指令来设置,代码如下:
env[DATABASE_HOST] = 192.168.0.1
env[DATABASE_USERNAME] = administrator
env[DATABASE_PASSWORD] = e1bfd762321e409cee4ac0b6e841963c
需要说明的一点是,这个设置必须放在主配置文件php-fpm.conf里,不能放到include指令设置的子配置文件里,否则会报错:「Array are not allowed in the global section」,另外一点,虽然是通过env设置的,但结果还是在$_SERVER里,而不是$_ENV.
说明:@Laruence 提醒了我,如果配置信息通过nginx的fastcgi_param来设置的话,当nginx和php交互时,会带来大量的数据传输,如此看来通过php-fpm的env来设置相对更有优势,鸟哥建议使用独立的扩展来搞定,比如「hidef」.
通过nginx和php-fpm配置文件来解决问题的话,有一个缺点,仅对Web有效,如果通过命令行来运行,那么无法在$_SERVER里获取相关信息,不过这不算什么难事儿,只要写个公共的脚本正则匹配一下nginx或者php-fpm的配置文件,就可以动态的把这些信息映射到命令行环境,具体怎么搞就留给大家自己操作吧.
代码干净了,剩下的工作就是如何确保nginx或php-fpm配置文件的安全了,不过和代码比起来,nginx或php-fpm配置文件并不需要很多人有权限,所以相对更容易管理.
Tags: PHP防注入 PHP敏感信息
- 上一篇:PHP防止远程非法提交表单程序代码
- 下一篇:php防止恶意刷新与刷票实现代码
相关文章
- ·PHP防注入内容过滤方法(2014-08-21)
- ·PHP整站防注入程序(2014-08-23)
- ·php sql注入与防注入经典案例分析(2014-08-23)
- ·经典php防注入函数代码(2014-08-25)
- ·php通用防注入与注入详细说明(2014-08-25)
- ·php防注入代码方法,过滤所有GET POST(2014-08-25)
- ·php简单实现sql防注入的方法(2021-07-29)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)