笔记

介绍

他是一个全局的配置文件
在PHP启动的时候会被读取,他启动的时候只读取一次,如果要生效要重启PHP
文件配置在这个里面
在这里插入图片描述
在这里插入图片描述

汉化版出来的内容
https://blog.csdn.net/qq_41860876/article/details/107042443

配置的基本语法

  • 大小写敏感

    1
    2
    directive= value指令=值)
    foo=bar≠FOo=bar
  • 运算符

    1
    |,&,~,!
  • 空值的表达方式

    1
    2
    3
    foo=   ;
    o= none;
    o= "none";

    基本配置的安全模式

安全模式

`safe_mode = off`

安全模式,用来限制文档的存取、限制环境变量的存取,控制外部程序的执行。
本特性已在PHP5.4.0被移除
看一下他默认是关闭的状态
在这里插入图片描述

对比一下他开启和关闭的区别

我用的PHP的版本是5.2

  1. 关闭的情况下
    php代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php

    $a = $_GET['cmd'];

    echo "<pre>";
    system($a);
    echo "<pre/>";

    ?>
    URL地址:http://192.168.31.95/a.php?cmd=ipconfig
    结果
    在这里插入图片描述
  2. 开启的情况下
    在这里插入图片描述
    然后在重启服务器
    PHP代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php

    $a = $_GET['cmd'];

    echo "<pre>";
    system($a);
    echo "<pre/>";

    ?>
    URL: http://192.168.31.95/a.php?cmd=ipconfig
    结果
    可以看到没有任何结果
    在这里插入图片描述

限制环境变量存取

safe_mode allowed_env_vars = string
指定 PHP 程序可以改变的环境变量的前缀,当这个选项的值为空时,那么 php 可以
改变任何环境变量。如:safe_mode_allowed_env_vars = PHP_,当这个选项的值为空时,那么 php
可以改变任何环境变量

外部程序执行目录

safe mode exec dir = “E:\Local Test\WWW"

禁用函数

disable_functions
为了更安全的运行PHP,可以用此指令来禁止一些敏感函数的使用,当你想用本指
令禁止一些危险函数时,切忌把dl()函数也加到禁止列表,攻击者可以利用dl()函数加载
自定义的php扩展来突破disable_function。配置禁用函数时可以使用逗号分隔函数名
默认情况下是什么都没有
在这里插入图片描述

现在我禁用一个函数然后再重启服务器
在这里插入图片描述
然后使用这个函数
PHP代码
<?php

1
2
3
4
5
6
7
$a = $_GET['cmd'];

echo "<pre>";
system($a);
echo "<pre/>";

?>

结果

在这里插入图片描述

com组件

com.allow dcom = false
PHP设置在安全模式下(safe_mode),仍旧允许攻击者使用COM()函数来创建系统
组件来执行任意命令,我推荐关闭这个函数来防止出现此漏洞
使用COM()函数需要在PHP.ini中配置extension=php_com_dotnet.dll,如果PHP
VERSION<5.4.5 则不需要

基本配置控制变量

全局变量注册开关

register_globals = off
php.ini的register_globals选项的默认值预设为Off,在4.2版本之前是默认开启的,当 register globals 的设定为 On 时,程序可以接收来自服务器的各种环境变量,包括表单提交的变量,这是对服务器来讲是非常不安全的,
所以我们不能让它注册为全局变量。

  • rr egister_globals=Off时,服务器端获取数据的时候用$_GET[‘name’]来获取数据
  • register_globals=On时,服务端使用POST或者GET提交的变量,都将自动使用全使用局变量的值来接受值

    开启和关闭的比较

    我用的PHP版本是5.2
    1. 关闭的状态
      php代码

魔术引号自动过滤

magic_quotes_gpc= on 本特性已在PHP5.4.0被移除
magic_quotes_gpc = Off 在php.ini里是默认关闭的,如果它打开后将自动把用户提交对sql的查询语句进行转换,如果设置成ON的话,php会把所有的单引号(“”),双引号(“”) ,反斜杠(“\”)和空字符(NULL)加上反斜杠进行转义,它会影响 HTTP 请求的数据有(GET、POST、Cookies),开启它会提高网站的安全性,当然,您也可以使用 addslashes 来转义提交的 HTTP 请求数据,或者用 stripslashes 来删除转义

基本配置,远程文件

是否允许包含远程文件

allow—uri include = off

该配置_为on的情况下,可以直接包含远程文件,若包含的变通为司投的慵况下,可以直接控制変置来执行PHP代码

是否允许打开远程文件

allow uri open = on

允许文件通过调用 URL重写来打开和关闭写权限,默认的封装协议提
供的ftp和http协议来访问文件

基本配置,目录权限

HTTP头部版本信息

expose_php = off
防止了通过http头部泄露的php版本信息

文件上传临时目录

upload_tmp_dir
上传文件临时保存的目录

用户可访问目录

open_basedir = E:\Local Test\WWW
该访问的文件,一定程度上限制了phpshell的危害,如果不设置的话,则采用系统的临时目录能够控制PHP脚本只能访问指定的目录,这样能够避免PHP脚本访问,不应

基本配置,报错休息

内部错误选项

display_errors = on
候通常把PHP错误显示打开

错误报告级别

error_reporting = E_ALL & ~ E NOTICE
表明显示PHP脚本的内部错误,网站发布后建议关闭PHP的错误回显,在调试的时这个设置的作用是将错误级别调到最高,显示所有问题,方便排错