php不启用save_mode安全模式的设置方法

安全配置一

(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.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用户的和组具有写的权限。

  MYSQL的降权运行

  新建立一个用户比如mysqlstart

  net user mysqlstart ****microsoft /add

  net localgroup users mysqlstart /del

  不属于任何组

  如果MYSQL装在d:\mysql ,那么,给 mysqlstart 完全控制 的权限

  然后在系统服务中设置,MYSQL的服务属性,在登录属性当中,选择此用户 mysqlstart 然后输入密码,确定。

  重新启动 MYSQL服务,然后MYSQL就运行在低权限下了。

  如果是在windos平台下搭建的apache我们还需要注意一点,apache默认运行是system权限,

  这很恐怖,这让人感觉很不爽.那我们就给apache降降权限吧。

  net user apache ****microsoft /add

  net localgroup users apache /del

  ok.我们建立了一个不属于任何组的用户apche。

  我们打开计算机管理器,选服务,点apache服务的属性,我们选择log on,选择this account,我们填入上面所建立的账户和密码,

  重启apache服务,ok,apache运行在低权限下了。

  实际上我们还可以通过设置各个文件夹的权限,来让apache用户只能执行我们想让它能干的事情,给每一个目录建立一个单独能读写的用户。

  这也是当前很多虚拟主机提供商的流行配置方法哦,不过这种方法用于防止这里就显的有点大材小用了。

安全配置二

  前面介绍了IIS+MySQL+PHP的基本配置过程和Windows的基本权限设置。这一部分我们需要讨论php的安全配置还有Web目录的安全配置,当然也必须有IIS的变态安全配置了。我这里先废话几句。

  我们最终的目标是Web站点只运行php,不支持asp不支持asp.net,让特定的目录或者子网站不能执行php脚本,例如图片目录,我们对它设置成不能运行php,这样就算您的网站被“黑客”登录了后台,能上传文件。但是最终他也不能执行webshell。

  就算拿到了webshell,他也不能读目录或者文件,不能执行命令。换句大话就是说强大的webshell在黑客手上没有任何的利用价值,让黑客最终直接抓狂而死。呵呵!其实做到这一点不是非常的难,跟随我的脚步来吧。学完本文章你就能独立的完成这样的变态的服务器配置了。

一、php.ini文件变态配置

  我们为什么把php.ini放在最前面写呢,因为我们的Web网站是php的,所以很多默认的选项是不安全的。给黑客留下了非常多的可利用机会,所以第一步我们必须要把php.ini设置的变态些,这样就能阻止一般脚本黑客的攻击了。

  我们首先来了解一些php.ini的基本概念性。空白字符和以分号开始的行被简单地忽略。设置指令的格式如下:directive = value 指令名(directive)是大小写敏感的!所以"foo=bar"不同于"FOO=bar"。值(value)可以是:

  1. 用引号界定的字符串(如:"foo")

  2. 一个数字(整数或浮点数,如:0,1,34,-1,33.55)

  3. 一个PHP常量(如:E_ALL,M_PI)

  4. 一个INI常量(On,Off,none)

  5. 一个表达式(如:E_ALL & ~E_NOTICE)

  还有另外一个是设置布尔值,1为On就是开启,0为Off就是关闭。php.ini分了很多部分,例如:模块部分,php全局配置,数据库配置,等等。如图1所示是一个基本的php.ini的例子。了解了基本的概念以后我们就可以开始变态配置之旅。

时间: 2024-08-26 15:53:29

php不启用save_mode安全模式的设置方法的相关文章

ssh无密码登录设置方法以及出现问题 ECDSA host key 和IP地址对应的key不同的解决

最近在做hadoop,因为要求各主机之间的用户必须相同,且为方便远程登录,需配置无密码登录 先附上ssh无密码登录设置方法: 先生成密钥并配置无ssh无密码登录本机,输入命令: ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys 将文件拷贝到其他主机相同的文件夹内,输入命令: scp authorized_keys hostname1:~/.ssh/ scp autho

关于内核转储(core dump)的设置方法

原作者:http://blog.csdn.net/wj_j2ee/article/details/7161586 1. 内核转储作用 (1) 内核转储的最大好处是能够保存问题发生时的状态. (2) 只要有可执行文件和内核转储,就可以知道进程当时的状态. (3) 只要获取内核转储,那么即使没有复现环境,也能调试. 2. 启用内核转储 1.1 查看内核转储是否有效 在终端中输入以下命令,查看内核转储是否有效. #ulimit -c 0 -c 表示内核转储文件的大小限制,现在显示为零,表示不能用. 可

CListCtrl 扩展风格设置方法---SetExtendedStyle和ModifyStyleEx

想把ListCtr设置为整行高亮显示错误的方法为: 1 clistctrl.ModifyStyleEx(0,LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES); 正确的方法为: 1 DWORD dwStyle = clistctrl.GetExtendedStyle(); 2 dwStyle |= LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES; 3 clistctrl.SetExtendedStyle(dwStyle); 那么,Modi

SQL Server 2008 阻止保存要求重新创建表的更改问题的设置方法

不是很理解为什么在2008中会加入阻止保存要求重新创建表的更改这个选项.症状表现为修改表结构的时候会"阻止"你.而且我遇到的情况是居然有的时候阻止你,有的时候不阻止你,摸不到头脑.SQL Server 2008“阻止保存要求重新创建表的更改”的错误的解决方案是本文我们主要要介绍的内容,情况是这样的:我们在用SQL Server 2008 建完表后,插入或修改任意列时,提示:当用户在在SQL Server 2008企业管理器中更改表结构时,必须要先删除原来的表,然后重新创建新表,才能完成

Wish新手必看 Wish Tags设置方法

Wish Tags的设置方法: 1.Tag是给Wish抓取你的产品信息用的,用户很少用Tag来搜索自己想要的商品.所以,tag要准确,不要一件衣服又说 Long sleeves又说Short sleeves.这样Wish就不好匹配,从而产品权重下降. 2.Tag的顺序一般来说是一级分类.二级分类.三级分类这样.用淘宝做测试,可以看到输入连衣裙 短袖 女装和输入女装 短袖 连衣裙,前出现的商品会一样,(付费用户在哪都享有特权)但是鼠标往下拉一点点就开始不一样了,而且两边衣服重复度也较低. 由于大部

Linux自动登陆的设置方法

前些天为了实现Linux自动登陆的方法,在网上查了很多资料,发现有不少方法,但网上有些方法的讲解不是特别清楚,或者已经过时.因此,特意整理了一下Linux自动登陆的设置方法.本文的测试环境为Centos 5.5. 1.设置GDMGDM是GNOME显示管理器,通过设置其配置文件/etc/gdm/custom.conf可以设置帐号自动登陆.设置方法如下:在/etc/gdm/custom.conf文件中添加以下内容[daemon]AutomaticLogin=usernameAutomaticLogi

Ubuntu下VSFTPD(五)(匿名FTP设置方法)

匿名FTP设置方法: 通常在登录FTP服务器的用户不确定的情况下,应将FTP服务器设置为允许匿名账号登录的FTP服务器 1.启用匿名帐号   anonymous_enable=YES   local_enable=YES   write_enable=YES   listen=YES 设置完成后,重启vsftd.将允许匿名账号和本地账号登录FTP服务器,同时允许匿名用户具有对FTP服务器文件的写权限,并且只能下载文件而不能上传,不允许匿名账号创建文件夹,匿名用户的口令为一个E-mail地址. 2

无线路由器连接电信光纤宽带光猫设置方法(转)

转自"http://jingyan.baidu.com/article/86fae346baad6f3c49121a35.html" 无线路由器连接电信光纤宽带光猫设置方法 | 浏览:24061 | 更新:2013-10-22 18:19 1 2 3分步阅读 电信光钎宽带光猫通常有四个输出接口,且其中有一个是iTV 还剩三个接口.很多时候我们需要连接多台电脑,包括手机无线wifi上网.这个时候我们就需要一个无线路由器.怎样将无线路由器接入光钎宽带光猫呢? 工具/原料 无线路由器一台 网

VMWare中Linux虚拟机设置静态IP上网的设置方法

VMWare中Linux虚拟机设置静态IP上网的设置方法 标签: vmwareLinux虚拟机securecrt静态IP上网 2016-05-18 02:30 702人阅读 评论(0) 收藏 举报  分类: Linux 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 现在大部分人的家庭网络环境都是通过无线路由器为家里的电脑和手机提供网络. 在使用VMware安装Linux之后,默认使用的是DHCP连接网络. 但是如果使用类似 SecureCRT以SSH方式连接到虚拟机上的