• 代码审计读书笔记一


    PHP核心配置详解

    register_globals(全局变量注册开关)

    该选项为on的情况下,直接回把用户GET,POST等方式提交上来的参数注册成全局变量并初始化为参数对应的值,使提交的参数可以直接在脚本中使用。

    配置范围为PHP_IN_ALL

    PHP版本必须小于5.4.0

    allow_url_include(是否允许包含远程文件)

    当存在include($var)且var可控的情况下,可直接控制$var执行php代码

    在PHP5.2.0后默认设置为off,配置范围为PHP_IN_ALL

    与之类似的配置有allow_url_fopen,配置是否允许打开远程文件。

    magic_quotes_gpc(魔术引号自动过滤)

    当该选项为on时,会自动在get,post,cookie变量中的单引号,双引号,反斜杠以及空字符前面加上反斜杠,

    但在php5中magic_quotes_gpc并不会过滤$_SERVER变量,PHP5.4被取消

    php小于4.2.3,配置范围是PHP_IN_ALL,之后是PHP_IN_PERDIR

    magic_quotes_runtime(魔术引号自动过滤)

    magic_quotes_runtime

    也是自动在单引号(')、双引号(")、反斜杠()及空字符
    (NULL)的前面加上反斜杠()。它跟 magic_quotes_gpc 的区别是,处理的对象不一
    样,magic_quotes_runtime 只对从数据库或者文件中获取的数据进行过滤,它的作用也
    非常大,因为很多程序员只对外部输入的数据进行过滤,却没有想过从数据库获取的
    数据同样也会有特殊字符存在,所以攻击者的做法是先将攻击代码写入数据库,在程
    序读取、使用到被污染的数据后即可触发攻击。同样, magic_quotes_runtime 在 PHP 5.4
    之后也被取消,配置范围是 PHP_INI_ALL。
    有一个点要记住,只有部分函数受它的影响,所以在某些情况下这个配置是可以
    绕 过 的, 受 影 响 的 列 表 包 括 get_meta_tags()、file_get_contents()、file()、fgets()、fwrite()、
    fread( )、fputcsv( )、stream_socket_recvfrom( )、exec( )、system( )、passthru( )、stream_
    get_contents( )、bzread( )、gzfile( )、gzgets( )、gzwrite( )、gzread( )、exif_read_data( )、
    dba_insert( )、dba_replace( )、dba_fetch( )、ibase_fetch_row( )、ibase_fetch_assoc( )、
    ibase_fetch_object( )、mssql_fetch_row( )、mssql_fetch_object( )、mssql_fetch_array( )、
    mssql_fetch_assoc( )、mysqli_fetch_row( )、mysqli_fetch_array( )、mysqli_fetch_
    assoc( )、mysqli_fetch_object( )、pg_fetch_row( )、pg_fetch_assoc( )、pg_fetch_array( )、
    pg_fetch_object( )、pg_fetch_all( )、pg_select( )、sybase_fetch_object( )、sybase_fetch_
    array( )、sybase_fetch_assoc( )、SplFileObject::fgets( )、SplFileObject::fgetcsv( )、
    SplFileObject::fwrite( )。

    magic_quotes_sybase(魔术引号自动过滤)

    magic_quotes_sybase 指令用于自动过滤特殊字符,当设置为 on 时,它会覆盖掉
    magic_quotes_gpc=on 的配置,也就是说,即使配置了 gpc=on 也是没有效果的。这个
    指令与 gpc 的共同点是处理的对象一致,即都对 GET、POST、Cookie 进行处理。而它

    们之前的区别在于处理方式不一样,magic_quotes_sybase 仅仅是转义了空字符和把
    单引号(')变成了双引号('' )。与 gpc 相比,这个指令使用得更少,它的配置范围是
    PHP_INI_ALL,在 PHP 5.4.0 中移除了该选项。

    safe_mode(安全模式)

    当 safe_mode=on 时,联动可以配置的指令
    有 safe_mode_include_dir、safe_mode_exec_dir、safe_mode_allowed_env_vars、safe_mode_
    protected_env_vars。safe_mode 指 令 的 配 置 范 围 为 PHP_INI_SYSTEM,PHP 5.4 之
    后被取消。

    下面是启用 safe_mode 指令时受影响的函数、变量及配置指令的完整列表:
    apache_request_headers( )、ackticks( )、hdir( )、hgrp( )、chmode( )、chown( )、
    copy( )、dbase_open( )、dbmopen( )、dl( )、exec( )、filepro( )、filepro_retrieve( )、
    ilepro_rowcount( )、fopen( )、header( )、highlight_file( )、ifx_*、ingres_*、link( )、
    mail( )、max_execution_time( )、mkdir( )、move_uploaded_file( )、mysql_*、parse_ini_
    file()、passthru( )、pg_lo_import( )、popen( )、posix_mkfifo( )、putenv( )、rename( )、
    zmdir( )、set_time_limit( )、shell_exec( )、show_source( )、symlink( )、system( )、
    touch( )。

    open_basedir PHP 可访问目录

    open_basedir 指令用来限制 PHP 只能访问哪些目录,通常我们只需要设置 Web
    件目录即可,如果需要加载外部脚本,也需要把脚本所在目录路径加入到 open_basedir
    指令中,多个目录以分号 ( ;) 分割。使用 open_basedir 需要注意的一点是,指定的限
    制实际上是前缀,而不是目录名。例如,如果配置 open_ b asedir =/www/a,那么目录
    /www/a 和 /www/ab 都是可以访问的。所以如果要将访问仅限制在指定的目录内,请用
    斜线结束路径名。例如设置成:open_basedir = /www/a/。
    当 open_basedir 配置目录后,执行脚本访问其他文件都需要验证文件路径,因此在
    执行效率上面也会有一定的影响。该指令的配置范围在 PHP 版本小于 5.2.3 时是 PHP_
    INI_SYSTEM,在 PHP 版本大于等于 5.2.3 是 PHP_INI_ALL。

    disable_functions 禁用函数

    当你想用本指令禁止一些危险函数时,切记要把 dl()
    函数也加到禁止列表,因为攻击者可以利用 dl() 函数来加载自定义的 PHP 扩展以突破
    disable_functions 指令的限制。本 指 令 配 置 范 围 为 php.ini only。

    display_errors 和 error_reporting 错误显示

  • 相关阅读:
    Docker运行python容器
    SharePoint Online 创建门户网站系列之定制栏目
    SharePoint Online 创建门户网站系列之创建栏目
    SharePoint Online 创建门户网站系列之图片滚动
    SharePoint Online 创建门户网站系列之导航
    SharePoint Online 创建门户网站系列之首页布局
    SharePoint Online 创建门户网站系列之母版页
    SharePoint Online 创建门户网站系列之准备篇
    SharePoint 2013 数据库中手动更新用户信息
    SharePoint 2013 新建项目字段自动加载上次保存值
  • 原文地址:https://www.cnblogs.com/yiruhua/p/5848197.html
Copyright © 2020-2023  润新知