AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 462470
Accepted
Remy Grandin
Remy Grandin
Asked: 2013-01-03 17:44:12 +0800 CST2013-01-03 17:44:12 +0800 CST 2013-01-03 17:44:12 +0800 CST

保护 PHP 的 exec 和其他人

  • 772

我目前正在设置托管服务,目前,我非常担心安全问题。这是我的情况:

我已经设置了多个 apache 的虚拟主机,出于明显的安全原因,我不想让用户通过 php 的系统功能四处移动来访问其他人的数据。

这就是我在每个虚拟主机中设置 open_basedir 的原因。尽管如此,我仍然担心一个主要的安全漏洞:exec 函数。

所以经过一些研究,我发现你可以在 php.ini 中使用 disable_functions 来禁用某些功能,就像他的名字告诉我们的那样。我已经找到了这个函数列表来禁用 who seams 非常完整:

disable_functions = "apache_child_terminate, apache_setenv, define_syslog_variables, 
escapeshellarg, escapeshellcmd, eval, exec, fp, fput, ftp_connect, ftp_exec, ftp_get, 
ftp_login, ftp_nb_fput, ftp_put, ftp_raw, ftp_rawlist, highlight_file, ini_alter, 
ini_get_all, ini_restore, inject_code, mysql_pconnect, openlog, passthru, php_uname, 
phpAds_remoteInfo, phpAds_XmlRpc, phpAds_xmlrpcDecode, phpAds_xmlrpcEncode, popen, 
posix_getpwuid, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_setuid, 
posix_setuid, posix_uname, proc_close, proc_get_status, proc_nice, proc_open, 
proc_terminate, shell_exec, syslog, system, xmlrpc_entity_decode"

但是,我觉得为我的用户限制php 是不对的。所以,两个问题:

  • 你认为对于大多数 CMS 和其他网络应用程序来说,这是一个夸张的情况吗?
  • 如果是这样,是否有其他方法来隔离每个虚拟主机数据?

PS:我已经在寻找 suexec 和其他的,但我认为它们不适合因为我在我的服务器上有 100 到 200 个用户,我不想为每个用户创建和管理系统帐户。

apache-2.2
  • 2 2 个回答
  • 2346 Views

2 个回答

  • Voted
  1. Best Answer
    Suku
    2013-01-03T17:56:31+08:002013-01-03T17:56:31+08:00

    在虚拟主机行业,尤其​​是在共享主机环境中,出于安全原因禁用某些 php 功能是很常见的。以下是最常见的被阻止的 php 函数:

    exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
    

    此外,最好为每个网站单独管理用户,因为如果服务器出现任何问题,您可以轻松识别谁做错了。

    为此,您可以使用 SuPHP: http ://www.techtrunch.com/installations/compile-apache-suphp-ubuntu http://www.inmotionhosting.com/support/website/general-server-setup/what-is- suphp

    您还可以在 php.ini 中考虑以下值,以使您的服务器更安全:

    1. allow_url_fopen- 禁用通过 URL 打开文件的能力
    2. session.save_path- 设置 php 存储其会话文件的路径
    3. open_basedir- 设置允许 php 脚本打开文件的路径
    • 1
  2. redheness
    2019-02-11T05:32:07+08:002019-02-11T05:32:07+08:00

    Exec 仅通过用户执行 php 来执行函数。而 apache 提供了一种以不同用户身份执行每个 vhost 的方法 ( https://askubuntu.com/a/899192/862510 ),因此您可以为每个 vhost 创建一个用户并控制他们各自的权限,包括文件夹权限。

    • 0

相关问题

  • Apache Django Mod_Wsgi - 自动重新加载应用程序

  • Apache:对多个虚拟主机使用相同的目录指令

  • Apache 上的子域不工作 - 找不到服务器

  • PHP 作为 CGI 还是 Apache 模块?

  • 避免将某些丢失的文件记录到 Apache2 错误日志中

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve