zoukankan      html  css  js  c++  java
  • 定制安全的PHP环境

    除了熟悉各种PHP漏洞外,还可以通过配置php.ini来加固PHP的运行环境。PHP官方也曾经多次修改php.ini的默认设置。在本书中,推荐php.ini中一些安全相关参数的配置。

    register_globals当register_globals = ON时,PHP不知道变量从何而来,也容易出现一些变量覆盖的问题。

    因此从最佳实践的角度,强烈建议设置 register_globals = OFF,这也是PHP新版本中的默认设置。

    open_basediropen_basedir可以限制PHP只能操作指定目录下的文件。这在对抗文件包含、目录遍历等攻击时非常有用。我们应该为此选项设置一个值。需要注意的是,如果设置的值是一个指定的目录,则需要在目录最后加上一个“/”,否则会被认为是目录的前缀。

    open_basedir = /home/web/html/

    allow_url_include

    为了对抗远程文件包含,请关闭此选项,一般应用也用不到此选项。同时推荐关闭的还有allow_url_fopen。

    allow_url_fopen = Off

    allow_url_include = Off

    display_errors错误回显,一般常用于开发模式,但是很多应用在正式环境中也忘记了关闭此选项。错误回显可以暴露出非常多的敏感信息,为攻击者下一步攻击提供便利。推荐关闭此选项。

    display_errors = Off

    log_errors在正式环境下用这个就行了,把错误信息记录在日志里。正好可以关闭错误回显。

    log_errors = On

    magic_quotes_gpc推荐关闭,它并不值得依赖(请参考“注入攻击”一章),已知已经有若干种方法可以绕过它,甚至由于它的存在反而衍生出一些新的安全问题。XSS、SQL注入等漏洞,都应该由应用在正确的地方解决。同时关闭它还能提高性能。magic_quotes_gpc = Off

    cgi.fix_pathinfo若PHP以CGI的方式安装,则需要关闭此项,以避免出现文件解析问题(请参考“文件上传漏洞”一章)。

    cgi.fix_pathinfo = 0

    文件解析问题,如附图:

    session.cookie_httponly开启HttpOnly(HttpOnly的作用请参考“跨站脚本攻击”一章)。

    session.cookie_httponly = 1

    session.cookie_secure若是全站HTTPS则请开启此项。

    session.cookie_secure = 1

    safe_modePHP的安全模式是否应该开启的争议一直比较大。一方面,它会影响很多函数;另一方面,它又不停地被黑客们绕过,因此很难取舍。如果是共享环境(比如App Engine),则建议开启safe_mode,可以和disable_functions配合使用;

    如果是单独的应用环境,则可以考虑关闭它,更多地依赖于disable_functions控制运行环境安全。

    disable_functionsdisable_functions能够在PHP中禁用函数。这是把双刃剑,禁用函数可能会为开发带来不便,但禁用的函数太少又可能增加开发写出不安全代码的几率,同时为黑客获取webshell提供便利。

    一般来说,如果是独立的应用环境,则推荐禁用以下函数:

    disable_functions = escapeshellarg, escapeshellcmd, exec,passthru, proc_close, proc_get_status, proc_open, proc_nice,proc_terminate, shell_exec, system, ini_restore, popen, dl,disk_free_space, diskfreespace, set_time_limit, tmpfile, fopen,readfile, fpassthru, fsockopen, mail, ini_alter, highlight_file,openlog, show_source, symlink, apache_child_terminate,apache_get_modules, apache_get_version, apache_getenv,apache_note, apache_setenv, parse_ini_file





  • 相关阅读:
    [BJOI2019] 光线
    C# 从零开始写 SharpDx 应用 笔刷
    BAT 脚本判断当前系统是 x86 还是 x64 系统
    BAT 脚本判断当前系统是 x86 还是 x64 系统
    win2d 通过 CanvasActiveLayer 画出透明度和裁剪
    win2d 通过 CanvasActiveLayer 画出透明度和裁剪
    PowerShell 拿到显卡信息
    PowerShell 拿到显卡信息
    win10 uwp 如何使用DataTemplate
    win10 uwp 如何使用DataTemplate
  • 原文地址:https://www.cnblogs.com/caoxiaojian/p/5633420.html
Copyright © 2011-2022 走看看