代码审计之常见的PHP的配置

1、配置文件

PHP配置文件一般是指:php.ini文件,php.ini是全局配置文件,里边可以设置很多东西,例如:
1、资源限制:

max_execution_time integer

这设置了脚本被解析器中止之前允许的最大执行时间,单位秒。 防止一些不好的脚本占尽服务器资源。(默认设置为30,但从命令行运行PHP时默认为0。)
2、数据处理:

post_max_size intager

允许的POST数据最大字节长度。此设定关系到文件上传。如果POST数据超出限制,那么 $ _POST和$_FILES将会为空。
3、路径设置:

include_path string

指定一组目录用于require(), include(), fopen_with_path()函数寻找文件。

extension_dir string

存放扩展库(模块)的目录,也就是PHP用来寻找动态扩展模块的目录。
4、文件上传:

file_uploads boolean or integer

是否允许HTTP文件上传。默认值为On允许HTTP文件上传,此选项不能设置为Off。

upload_tmp_dir string

文件上传时存放文件的临时目录(必须是PHP进程用户可写的目录)。如果未指定则PHP使用系统默认的临时目录。
5、Fopen 封装:

allow_url_fopen = On

本选项激活了 URL 形式的 fopen 封装协议使得可以访问 URL 对象例如文件。默认的封装协议提供用 ftp 和 http协议来访问远程文件,一些扩展库例如 zlib 可能会注册更多的封装协议。(Note:出于安全性考虑,此选项只能在 php.ini 中设置。)

6、session:

session.use_strict_mode

指定模块是否将使用严格的会话ID模式。 如果启用此模式,模块不接受未初始化的会话ID。 如果从浏览器发送未初始化的会话ID,则会将新的会话ID发送到浏览器。 应用程序通过严格模式的会话采用保护会话固定。 默认为0(禁用)。

session.use_cookies boolean

指定是否在客户端用 cookie 来存放会话 ID。默认为 1(启用)。

session.cookie_secure boolean

指定是否仅通过安全连接发送 cookie。默认为 off。

配置文件还有.user.ini文件(用户级别的配置文件).htaccess.ini文件,这些文件都可以在网站的根目录和子目录下使用。

配置文件php.ini在PHP启动时被读取,对于服务器模块版本的PHP,仅在web服务器启动时读取一次。

php.ini配置文件的特点:

在httpd.conf中用相关的语法就可以覆盖掉php.ini中的值!!!

php配置有不同的配置权限,不同的权限在不同的配置文件是不一样的。这个可以去官方文档中查看。


CGI和CLI

CGI是公共网关接口(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。
CLI 是命令行界面(Command Line Interface),可在用户提示符下键入可执行指令的界面。CLI则是命令行接口,用于在操作系统命令行模式下执行PHP。


2、语法

PHP配置文件的语法很简单。设置指令的格式如下:

directive = value

指令名:directive区分大小写。value可以是字符串(“hello”),一个数字,一个PHP常量,一个INI常量,一个表达式(E_ALL & ~E_NOTICE)


3、变量相关

1、全局变量:register_globals = off
有些程序例如OSC(Open Source Commerce开放源代码的商业软件)需要启动全局变量。当打开这个配置的时候,PHP会将 $ _POST,$ _GET,$ _COOKIE,$_SESSION数组中的 $ key=> $value直接注册为变量,比如: $_POST[‘username’]就会直接被注册为 $username。这样不仅不利于人阅读代码(维护),可能还会引起变量之间的相互覆盖,甚至还有严重的安全问题。所以这里一般是off。

2、短标签:short_open_tag=On
On状态表示允许使用缩写:<?php ?>缩写为<? ?>。<? = 和 <? echo等价。


4、安全模式

safe_mode = off

php的安全模式是个非常重要的内嵌的安全机制,能够控制一些php中的函数,比如system(),同时把很多文件操作函数进行了权限控制。默认是关闭的,记得打开。

禁用类函数:disable_classes =,disable_functions =,disable_functions
这些存在于php.ini配置文件中的函数作用和黑名单是一样的。添加的都不能使用。这个还是很实用的。


5、上传文件及目录权限

设置上传:

file_uploads = on

设置上传文件大小:

upload_tmp_dir = 8M

上传文件的临时目录:

upload_tmp_dir=

用户访问目录限制:

open_basedir = .;/tmp/(这里是分号)

这里一般设置为只能访问当前目录(即PHP脚本文件所在目录和/tmp/目录),这样有效的预防了php木马跨站运行。


6、错误信息

错误信息控制:

display_error = On

是否将错误信息作为输出的一部分,调试的时候打开,运行的时候关闭。

设置错误报告级别:

error_reporting = E_ALL

这个设置的作用是将错误级别设置为最高,可以显示所有的问题,方便查错,也有利于写出高质量代码。


7、魔术引号及远程文件

自动转义:

magic_quotes_gpc = On

开启时,所有的单引号,双引号,反斜杠和NULL被一个反斜杠自动转义。

是否允许打开远程文件:

allow_url_fopen = On

这个最上面说过了。

是否允许包含远程文件:

allow_url_include = off

本选项激活允许include,include_once,require,require_once等函数使用URL形式的fopen封装协议,简单来说就是可以包含远程文件。


参考的资料来自大佬:小云云。文章:php.ini中的常用配置详解。地址:https://www.php.cn/php-weizijiaocheng-390988.html

参考资料来自大佬:地球上的我。文章:CLI和CGI的区别。地址:https://www.cnblogs.com/zjdeblog/p/6899574.htm


新手上路,如有错误,还望指出,虚心学习,一定改正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值