php.ini 安全配置

(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,escapeshellarg,escapeshellcmd,proc_close,proc_open,dl,show_source,get_cfg_var

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

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.12345.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

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

(11) 错误日志

建议在关闭display_errors后能够把错误信息记录下来,便于查找服务器运行的原因:

log_errors = On

同时也要设置错误日志存放的目录,建议根apache的日志存在一起:

error_log = D:/usr/local/apache2/logs/php_error.log

注意:给文件必须允许apache用户的和组具有写的权限。

转载于:https://www.cnblogs.com/52php/p/6084338.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/417760.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mac 删除php56 安装php72,mac php56升级php70

//安装PHP7命令:$ brew install php70//删掉以前安装的PHP5.6//你可以根据自己的情况来修改命令:$ brew unlink php56命令:$ brew link php70//大功告成$ php -v PHP 7.0.0(cli) (built:Dec2 2015 13:06:23) ( NTS )Copyright(c) 1997-2015 T…

sqlserver注释巧清理

生成表创建语句 Excel公式过滤EXEC sys.sp_addextendedproperty IF(LEFT(A1,9)"EXEC sys.",A1,"") 正则替换EXEC sys.sp_addextendedproperty \nameNMS_Description, \valueN[^]? ,EXEC sys.sp_dropextendedproperty \nameNMS_Description, 删除数据库关…

CMS收集器

CMS收集周期CMS并非没有暂停,而是用两次短暂停来替代串行标记整理算法的长暂停,它的收集周期是这样:初始标记(CMS-initial-mark) -> 并发标记(CMS-concurrent-mark) -> 重新标记(CMS-remark) -> 并发清除(CMS-concurrent-sweep) -&g…

php删除二位数组相同元素,删除去除二维数组中相同元素与数组重复值实例-PHP源码...

《script》ec(2);《script》$list array(array(id>107,title>aaa),array(id>106,title>bbb),array(id>105,title>ccc),array(id>104,title>ccc),array(id>103,title>ddd),array(id>102,title>eee),array(id>101,title>fff),);funct…

Sql Server中查看/修改identity(自增列)的值

查看某个表中的自增列当前的值:DBCC CHECKIDENT (TableName) 修改某个表中的自增列当前的值:DBCC CHECKIDENT (TableName, RESEED, value) 比如我要把 Division 表中的 自增列 的当前值改为 30 可以用如下命令 DBCC CHECKIDENT (Divisio…

activiti jbpm相关资源

Activiti 5.16 用户手册 http://www.mossle.com/docs/activiti/index.html jBPM 4.4开发指南 http://www.mossle.com/docs/jbpm4devguide/html/index.html head first process 深入浅出流程 http://blog.csdn.NET/ronghao100/article/category/662142 Fixflow引擎解析(一)(介绍…

matlab绘制贝叶斯曲线,Matlab建立SVM,KNN和朴素贝叶斯模型分类绘制ROC曲线

原文链接:http://tecdat.cn/?p15508绘制ROC曲线通过Logistic回归进行分类加载样本数据。load fisheriris通过使用与versicolor和virginica物种相对应的度量来定义二元分类问题。pred meas(51:end,1:2);定义二进制响应变量。resp (1:100)>50; % Versicolor 0,…

4400php兑换美金是多少,美金换算人民币怎么算(美金换人民币怎样计算)

这些东西我真的不懂 教我怎么计算就可以了你手上是现金的话就用 美元数乘以现钞买入价人民币数 如果是国外汇过来的现汇(存在账户里) 就用美元数乘以现汇买入价人民币数 具体牌价请看中国银行牌价 http://.按当天汇率计算啊。 比如说你有一百美元, 今天的汇率是687.…

Xcode8更新约束

Xcode升级之后就会发现约束设置好,想更新一下约束,看看约束是不是刚刚好,习惯性的去点右下角的更新约束的结果却发现没有更新约束的这一项了,好尴尬。 后来发现原来在Xcode8的约束更新换了一个地方,并不是在原来的右下…

VS2010如何在编辑器自动换行

1.在“工具”菜单上选择“选项”。 2.在“文本编辑器”文件夹中,选择“所有语言”子文件夹中的“常规”选项,以便在全局设置此选项。 - 或 - 在您所使用的编程语言的子文件夹中,选择“常规”选项。 3.在“设置”下,选择或清除“自…

ie 调用java的时候报错,调用javabean的非常郁闷的异常。

当前位置:我的异常网 Java Web开发 调用javabean的非常郁闷的异常。调用javabean的非常郁闷的异常。www.myexceptions.net 网友分享于:2013-09-12 浏览:18次调用javabean的非常郁闷的错误。。急!!!我已经做了测试 …

WinForm------GridControl单元格内容修改外表样式

private void gridView1_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e) {if (e.Column.FieldName "Examine"){if (e.DisplayText.Equals("已审批")){e.Appearance.ForeColor Color.Red;}else{e.Appearan…

Visual Studio 2008 安装失败(“Web 创作组件”无法安装)解决方法

今天安装VS2008时出现了问题,怎么都无法安装成功。装了好几次都在“Visual Studio Web 创作组件(Visual Studio Authoring Component)”的安装的时候失败。解决方法:1、使用Windows Installer 清理实用工具,清理Micros…

open()的模块

对文件操作流程: 1、打开文件,得到文件句柄并赋值给一个变量 2、通过句柄对文件进行操作 3、关闭文件 mode can be: * ‘r’ 只读。 * ‘w’ 写入,如果之前有就覆盖 * ‘a’ 追加。 表格: mode文件不存在文件存在读写…

matlab中xtem,快速傅里叶变换_蝶形运算_按频率抽取基2-fft算法_MATLAB代码

function yMyFFT_FB(x,n)%MYFFT_TB:My Fast Fourier Transform Frequency Based%按频率抽取基2-fft算法%input:% x -- 输入的一维样本% n -- 变换长度,缺省时 nlength(x) 当n小于x数据长度时,x数据被截断到第n个数据 % 当n大于时,x数据在尾部…

log4net使用指南(转载)

Log4Net使用指南 声明:本文内容主要译自Nauman Leghari的Using log4net,亦加入了个人的一点心得(节3.1.4)。请在这里下载示例代码 1 简介 1.1 Log4net的优点: 几乎所有的大型应用都会有自己的用于跟踪调试的API。因为…