PHP代码审计(一)常见ini配置

发布时间:2020-01-13 21:33:00 阅读:30

    我这里大概看了一下常见的重要的php.ini配置。

    具体详细配置请参照官方网站:

    https://www.php.net/

     

    1:启用全部变量

    Register_globals = on;

    这个设置的作用是关闭自动注册的全局变量。

    如果设置为on的话,PHP会自动将超全局变量($_GET,$_POST,$_SESSION,$_REQUEST)数组中的变量注册为变量,例如:$_POST[‘username’] 会直接被注册为 $username.。

    虽然方便了调用,但是会有以下几个问题:

    (1):不知道变量是从哪里来的,到底是$_POST,还是$_SESSION中的?代码不方便阅读。

    (2):变量之间相互覆盖,引起不必要的麻烦,而且还不容易找。

    (3):安全问题,所以要设置为off

     

    2:短标签

    Short_open_tag = on

    这个设置决定了在书写PHP代码的时候,是否允许使用 <??> 这种形式。

    如果禁用,在书写PHP代码的时候就需要使用<?php?>的形式。

     

    3:设置上传及最大上传文件大小

    File_uploads = on
    Upload_max_filesize = 8M

     

     

    4:文件上传临时目录

    Upload_tmp_dir =

    上传临时目录,需要可写权限(linux系统),如果不设置,则默认系统目录linux:/tmp

    Windows:c:\windows\temp

     

    5:用户访问目录限制

    Open_basedir = ./tmp/

    Open_basedir能控制脚本访问指定目录,这样能避免PHP脚本访问不应该访问的目录及文件,一定程度上限制了PHPshell对程序的危害,一般我们都设置当前程序的脚本只能访问当前程序所在的目录及/tmp/目录,有效防止木马跨站攻击。

     

    6:错误信息控制

    Display_error = on

    是否将错误信息作为输出的一部分,站点发布之后应该关闭这个功能,丢人是一回事,另外主要是暴露信息了就不好了,调试的时候当然要打开了,不然就啥也看不到了。

     

    7:设置错误报告级别

    Error_reporting = E_ALL

    这个设置是将错误级别设置为最高,可以显示所有问题,方便差错,也有利于写出高质量的代码,一般推荐使用E_ALL或者E_STRICT,即所有级别。

     

    8:错误日志:

    Error_log =

    错误日志的位置,必须对web用户可写入,如果不定义,则默认写入到web服务器的错误日志中去。

    Log_errors = on

    如上边所说,建议将错误日志输入到文件中去,而不是输出到前端。

    Log_errors_max_length = 1024

    错误日志相关信息最大长度,设置0则表示无限长度。

     

    9:是否允许打开远程文件

    Allow_url_fopen = on

    本选项激活了URL形式的fopen封装协议使得可以访问URL对象例如文件,默认封装协议提供用ftp和http协议来访问远程文件,一些扩展库例如zlib可能会注册更多的封装协议。

     

    10:是否包含远程文件

    Allow_url_include = off

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

     

    以上大概就是php.ini中常见设置的配置,可能需要注意一下。

     

    有好的建议,请在下方输入你的评论。


关键字PHP代码审计