php解决安全问题的方法实例


Posted in PHP onSeptember 19, 2019

PHP安全配置

(1) 打开php的安全模式

php的安全模式是个非常重要的内嵌的安全机制,能够控制一些php中的函数,比如system(),同时把很多文件操作函数进行了权限控制,也不允许对某些关键文件的文件,比如/etc/passwd,但是默认的php.ini是没有打开安全模式的,我们把它打开:

safe_mode = on

 

(2) 用户组安全

当safe_mode打开时,safe_mode_gid被关闭,那么php脚本能够对文件进行访问,而且相同组的用户也能够对文件进行访问。

建议设置为:

safe_mode_gid = off

 

如果不进行设置,可能我们无法对我们服务器网站目录下的文件进行操作了,比如我们需要对文件进行操作的时候。

(3) 安全模式下执行程序主目录

如果安全模式打开了,但是却是要执行某些程序的时候,可以指定要执行程序的主目录:

safe_mode_exec_dir = D:/usr/bin

 

一般情况下是不需要执行什么程序的,所以推荐不要执行系统程序目录,可以指向一个目录,然后把需要执行的程序拷贝过去,比如:

safe_mode_exec_dir = D:/tmp/cmd

 

但是,我更推荐不要执行任何程序,那么就可以指向我们网页目录:

safe_mode_exec_dir = D:/usr/www

(4) 安全模式下包含文件

如果要在安全模式下包含某些公共文件,那么就修改一下选项:

safe_mode_include_dir = D:/usr/www/include/

其实一般php脚本中包含文件都是在程序自己已经写好了,这个可以根据具体需要设置。

(5) 控制php脚本能访问的目录

使用open_basedir选项能够控制PHP脚本只能访问指定的目录,这样能够避免PHP脚本访问不应该访问的文件,一定程度上限制了phpshell的危害,我们一般可以设置为只能访问网站目录:

open_basedir = D:/usr/www

(6) 关闭危险函数

如果打开了安全模式,那么函数禁止是可以不需要的,但是我们为了安全还是考虑进去。比如,我们觉得不希望执行包括system()等在那的能够执行命令的php函数,或者能够查看php信息的phpinfo()等函数,那么我们就可以禁止它们:

disable_functions = system,passthru,exec,shell_exec,popen,phpinfo

如果你要禁止任何文件和目录的操作,那么可以关闭很多文件操作

disable_functions = chdir,chroot,dir,getcwd,opendir,readdir,scandir,fopen,unlink,delete,copy,mkdir, rmdir,rename,file,file_get_contents,fputs,fwrite,chgrp,chmod,chown

以上只是列了部分不叫常用的文件处理函数,你也可以把上面执行命令函数和这个函数结合,就能够抵制大部分的phpshell了。

(7) 关闭PHP版本信息在http头中的泄漏

我们为了防止黑客获取服务器中php版本的信息,可以关闭该信息斜路在http头中:

expose_php = Off

比如黑客在 telnet www.greatmo.com 80 的时候,那么将无法看到PHP的信息。

(8) 关闭注册全局变量

在PHP中提交的变量,包括使用POST或者GET提交的变量,都将自动注册为全局变量,能够直接访问,这是对服务器非常不安全的,所以我们不能让它注册为全局变量,就把注册全局变量选项关闭:

register_globals = Off

当然,如果这样设置了,那么获取对应变量的时候就要采用合理方式,比如获取GET提交的变量var,那么就要用$_GET['var']来进行获取,这个php程序员要注意。

(9) 打开magic_quotes_gpc来防止SQL注入

SQL注入是非常危险的问题,小则网站后台被入侵,重则整个服务器沦陷,所以一定要小心。php.ini中有一个设置:

magic_quotes_gpc = Off

这个默认是关闭的,如果它打开后将自动把用户提交对sql的查询进行转换,比如把 ' 转为 \'等,这对防止sql注射有重大作用。所以我们推荐设置为:

magic_quotes_gpc = On

(10) 错误信息控制

一般php在没有连接到数据库或者其他情况下会有提示错误,一般错误信息中会包含php脚本当前的路径信息或者查询的SQL语句等信息,这类信息提供给黑客后,是不安全的,所以一般服务器建议禁止错误提示:

display_errors = Off

如果你却是是要显示错误信息,一定要设置显示错误的级别,比如只显示警告以上的信息:

error_reporting = E_WARNING & E_ERROR

当然,我还是建议关闭错误提示。

以上就是php如何解决安全问题的详细内容,感谢大家的学习和对三水点靠木的支持。

PHP 相关文章推荐
建立动态的WML站点(三)
Oct 09 PHP
php session 错误
May 21 PHP
php的字符串用法小结
Jun 08 PHP
匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来
Dec 25 PHP
PHP+memcache实现消息队列案例分享
May 21 PHP
ThinkPHP字符串函数及常用函数汇总
Jul 18 PHP
PHP自定session保存路径及删除、注销与写入的方法
Nov 18 PHP
PHP获取不了React Native Fecth参数的解决办法
Aug 26 PHP
PHP在innodb引擎下快速代建全文搜索功能简明教程【基于xunsearch】
Oct 14 PHP
Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
Oct 11 PHP
Thinkphp 框架扩展之应用模式实现方法分析
Apr 27 PHP
PHP程序员简单的开展服务治理架构操作详解(三)
May 14 PHP
PHP中16个高危函数整理
Sep 19 #PHP
php实例化一个类的具体方法
Sep 19 #PHP
PHP递归统计系统中代码行数
Sep 19 #PHP
PHP实现统计代码行数小工具
Sep 19 #PHP
php设计模式之观察者模式定义与用法经典示例
Sep 19 #PHP
php设计模式之职责链模式定义与用法经典示例
Sep 19 #PHP
php使用yield对性能提升的测试实例分析
Sep 19 #PHP
You might like
无数据库的详细域名查询程序PHP版(1)
2006/10/09 PHP
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
2010/10/12 PHP
smarty实现多级分类的方法
2014/12/05 PHP
jQuery移动和复制dom节点实用DOM操作案例
2012/12/17 Javascript
JS特殊函数(Function()构造函数、函数直接量)区别介绍
2013/05/19 Javascript
基于jquery自定义的漂亮单选按钮RadioButton
2013/11/19 Javascript
JavaScript获取客户端计算机硬件及系统等信息的方法
2014/01/02 Javascript
jquery将一个表单序列化为一个对象的方法
2014/01/03 Javascript
通过onmouseover选项卡实现img图片的变化
2014/02/12 Javascript
Javascript核心读书有感之类型、值和变量
2015/02/11 Javascript
在JavaScript的正则表达式中使用exec()方法
2015/06/16 Javascript
js+html5实现canvas绘制网页时钟的方法
2016/05/21 Javascript
Bootstrap Modal遮罩弹出层(完整版)
2016/11/21 Javascript
js阻止移动端页面滚动的两种方法
2017/01/25 Javascript
详解webpack分包及异步加载套路
2017/06/29 Javascript
JS实现二维数组横纵列转置的方法
2018/04/17 Javascript
微信小程序身份证验证方法实现详解
2019/06/28 Javascript
使用ThinkJs搭建微信中控服务的实现方法
2019/08/08 Javascript
Jquery动态列功能完整实例
2019/08/30 jQuery
TypeScript中使用getElementXXX()的示例代码
2019/09/12 Javascript
JS实现transform实现扇子效果
2020/01/17 Javascript
jQuery使用jsonp实现百度搜索的示例代码
2020/07/08 jQuery
Python 批量合并多个txt文件的实例讲解
2018/05/08 Python
Python搭建Spark分布式集群环境
2019/07/05 Python
使用python实现unix2dos和dos2unix命令的例子
2019/08/13 Python
python的json中方法及jsonpath模块用法分析
2019/12/06 Python
Python 自由定制表格的实现示例
2020/03/20 Python
Pyinstaller 打包发布经验总结
2020/06/02 Python
Python 实现PS滤镜的旋涡特效
2020/12/03 Python
澳大利亚时尚前卫设计师珠宝在线:Amber Sceats
2017/10/04 全球购物
荷兰街头时尚之家:Funkie House
2019/03/18 全球购物
华为智利官方商店:Huawei Chile
2020/05/09 全球购物
医药公司采购员岗位职责
2014/09/12 职场文书
2015年七夕情人节活动方案
2015/05/06 职场文书
西柏坡观后感
2015/06/08 职场文书
暑假开始了,你的暑假学习计划写好了吗?
2019/07/04 职场文书