web安全之php中常见的INI文件配置
php.ini
在 PHP 启动时被读取。对于服务器模块版本的 PHP,仅在 web 服务器启动时读取
一次。对于 CGI 和 CLI 版本,每次调用都会读取。
* Apache web 服务器在启动时会把目录转到根目录,这将导致 PHP 尝试在根目录
下读取 php.ini,如果存在的话。
* 在 php.ini 中可以使用环境变量。
.user.ini 文件
自 PHP 5.3.0 起,PHP 支持基于每个目录的 .htaccess 风格的 INI 文件。此类文件
仅被 CGI/FastCGI SAPI 处理。此功能使得 PECL 的 htscanner 扩展作废。如果使
用 Apache,则用 .htaccess 文件有同样效果。
启用全局变量
register_globals = on
有些程序例如OSC需要启用全局变量.这个设置的作用是关闭自动注册的全局变量,
在设置为On的时候,php会将$_POST,$_GET,$_COOKIE,$_ENV,$_SESSION数组中的$key=>$value直
接注册为变量,比如$_POST['username']就会被注册为$username。
虽然方便了调用,但是会有三个问题:
• 不知道变量是哪里来的,$_POST来的还是$_SESSION来的呢?非常不方便别人阅读代码。
• 变量之间互相覆盖,引起不必要的麻烦。
• 安全问题。所以要设置为Off。
短标签
short_open_tag = On
这个设置决定是否允许使用 PHP 代码开始标志的缩写形式(<? ?>)。如果禁用了,必须使用 PHP 代码开始
标志的完整形式(<?php ?>)。
本指令也会影响到缩写形式 <?=,它和 <? echo 等价。使用此缩写需要 short_open_tag 的值为 On。 从
PHP 5.4.0 起, <?= 总是可用的。
安全模式
safe_mode = off
php的安全模式是个非常重要的内嵌的安全机制,能够控制一些php中的函数,比如system(),同时把很多文件
操作函数进行了权限控制,也不允许对某些关键文件的文件,比如/etc/passwd,但是默认的php.ini是没有打
开安全模式的
安全模式下执行程序主目录
safe_mode_exec_dir = /var/www/html
如果 PHP 使用了安全模式,system() 和其它程序执行函数将拒绝启动不在此目录中的程序。必须使用 / 作为
目录分隔符,包括 Windows 中。 简单来说,就是这个目录下可以执行。
禁用类/函数
disable_classes = , disable_functions = , disable_functions = opendir,readdir,scandir,fopen,unlink
禁用某些类,禁止某些函数。接受逗号分隔的函数名列表作为参数。只能设置在 php.ini 中。
设置上传文件大小
file_uploads = on
upload_max_filesize = 8M
post_max_size = 8M
POST的数值要大于等于upload,否则upload不起作用。
文件上传临时目录
upload_tmp_dir =
上传临时文件保存的目录,需要可写,如果不设置,则采用系统临时目录。(/tmp)
用户访问目录限制
open_basedir = .:/tmp/
使用open_basedir选项能够控制PHP脚本只能访问指定的目录,这样能够避免PHP脚本访问不应该访问的文件,
一定程度上限制了phpshell的危害.我们一般可以设置为只能访问网站目录,表示允许访问当前目录(即PHP脚本
文件所在之目录)和/tmp/目录,有效防止php木马跨站运行。
错误信息控制
display_error = On
是否将错误信息作为输出的一部分,站点发布后应该关闭这项功能,以免暴露信息。调试的时候当然是要On的,
不然就什么错误信息也看不到了。
设置错误报告级别
error_reporting = E_ALL
这个设置的作用是将错误级别设置为最高,可以显示所有的问题,方便查错,也有利于写出高质量的代码。
日志级别是一些常量,在php.ini中有写,推荐使用 E_ALL | E_STRICT,即所有级别。
错误日志
error_log =
错误日志的位置,必须对web用户可写入,如果不定义则默认写入到web服务器的错误日志中去 。
log_errors = on
如上所说,建议将错误日志输出到文件,而不是直接输出到前端。
log_errors_max_length = 1024
错误日志关联信息的最大长度,设为0表示无限长度。
魔术引号 【Warning:本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。】
magic_quotes_gpc = On
magic_quotes_runtime = Off
为 GPC (Get/Post/Cookie) 操作设置 magic_quotes 状态。 当 magic_quotes 为 on,所有的 ' (单引号)、"
(双引号)、\(反斜杠)和 NULL 被一个反斜杠自动转义。
是否允许打开远程文件
allow_url_fopen = on
本选项激活了 URL 形式的 fopen 封装协议使得可以访问 URL 对象例如文件。默认的封装协议提供用 ftp 和
http 协议来访问远程文件,一些扩展库例如 zlib 可能会注册更多的封装协议。
是否允许包含远程文件
allow_url_include = off
本选项激活允许 include, include_once, require, require_once等函数使用 URL 形式的 fopen 封装协议。简
单来说就是可以包含远程文件。
web安全之php中常见的INI文件配置的更多相关文章
- 向php文件中添加php.ini文件
向php文件中添加php.ini文件 默认情况下,php是没有php.ini配置文件的,必须手工添加php.ini文件 在php安装目录中,复制php.ini文件到/usr/local/php/lib ...
- [转载]windows7中没用boot.ini文件而是改用BCDEDIT来配置了
原文地址:windows7中没用boot.ini文件而是改用BCDEDIT来配置了作者:开心骝哥 本人安装的Win7,因为机上有两个系统,一个dos系统,一个win7系统,开机时总是会在系统选择的界面 ...
- 云服务器 ECS Linux 系统中常见的日志文件介绍
云服务器 ECS Linux 系统中,日志文件是非常重要的文件,它们记录了很多系统中重要的事.Linux 系统中常见日志文件概述如下: /var/log/cron可以在 cron 文件中检查 cron ...
- InnoSetup中枚举出INI文件的所有sections和键值
原文 http://blog.chinaunix.net/uid-23480430-id-3016899.html InnoSetup支持一些INI文件操作函数, 例如GetIniString,Ini ...
- IDEA中怎么创建ini文件
首先博主在这使用的是idea的2019.3.2的版本,不知道的话可以打开help菜单的about查看 第一步: 具体需要在setings安装ini插件 第二步: 在File Types中查看ini,没 ...
- [问题解决]eclipse.ini 文件配置jdk版本
想要多个JDK 和 多个eclipse在一台电脑上同时运行无需配置环境变量,只需修改eclipse.ini文件即可启动eclipse. -vm D:\javaSE1.\jdk1.\bin\javaw. ...
- Django模版中加载静态文件配置详解
.settings.INSTALLED_APPS下添加:django.contrib.staticfiles .settings.py下添加:STATIC_URL = '/static/' . ()在 ...
- tomcat中的server.xml文件配置了URIEncoding="UTF-8"需要注意的问题
1. get请求传递中文时本地连正式库访问都正常,正式环境下单独访问报错 代码: 请求:project/projectInfo/export/?cks=’项目类型 public String ...
- 一些常见的pro文件配置
UI_DIR = ./ui #ui文件目录 TARGET = Test #最终生成目标名 DESTDIR = $$PWD/../test #目标生成目录,$$PWD表示当前目录下 DLLDESTDIR ...
随机推荐
- DOM的预习
HTML DOM 将 HTML 文档视作树结构.这种结构被称为节点树: 一些常用的 HTML DOM 方法: getElementById(id) - 获取带有指定 id 的节点(元素) append ...
- JAVA内存模型与JVM内存结构
问题:什么事java内存模型? 首先呢不要答堆.栈.方法区.这是JVM的内存结构.下面阐述了JMM和JVM的区别和自己对JMM的见解 1.Java内存模型(JMM):即多线程相关的.定义了一个线程对另 ...
- mysql数据库事务隔离原理
今天在学习JDBC的时候看到了关于MySQL的事务的隔离级别的问题,感觉内容挺高级的,所以记录一篇文章,以备后面使用. 数据库隔离级别有四种,应用<高性能mysql>一书中的说明: 然后说 ...
- charles 启用/禁用断点
本文参考:charles 启用/禁用断点 1.3. enable/disable breakpoints 和 2.3 breakpoints settings 断点设置是常用的了,没啥好说的了,可以设 ...
- 实现非管理型UPS在linux主机上的停电自动关机
买了个山特的SANTAK TG-BOX 850 UPS,自带USB通讯线缆.本以为官方软件提供Linux下的CLI命令以监控UPS状态. 官网提供的下载链接巨慢无比不说,CLI下只提供了安装脚本,没有 ...
- uni-app开发微信小程序的几天时间
人只有在不断的学习,才能不断的给自己充电,如果我们停止了学习,就像人没有了血脉,就会死亡,近来学习比较忙,压力比较大,整天面对着电脑,敲击代码,从中虽然收获了快乐,但是换来的确实身体的伤痛,最近虽然自 ...
- 为什么一个标准的反相器中 P 管的宽长比要比 N 管的大呢?
和载流子有关.P 管是空穴导电,而 N 管是电子导电,电子的迁移率大于空穴.所以在同样的电场下,N 管的电流要大于 P 管,因此要增大 P 管的宽长比,使之对称,这样才能使得两者上升下降时间相等.高低 ...
- asp.netcore3.0 netstandard2.1 使用 DbProviderFactories 连接数据库
在.netstandard2.0时 System.Data.Common 这个包里并没有加入DbProviderFactories DbProviderFactories类在.netframework ...
- RxSwift 中的调度器
与 ReactiveCocoa 相比,Rx 的一大优势就是更丰富的并发模型.提到并发,就不得不提多线程.在 RxSwift 中,与线程对应的概念就是调度器,本文就调度器做些介绍,包括并发调度器.串行调 ...
- 洗牌Shuffle'm Up POJ-3087 模拟
题目链接:Shuffle'm Up 题目大意 模拟纸牌的洗牌过程,已知两个牌数相等的牌堆.求解经过多少次洗牌的过程,使牌的顺序与目标顺序相同. 思路 直接模拟,主要是字符串的操作.问题是,如何判断出不 ...