在htaccess中禁用php函数

我试图创建一个受欢迎的网站的私人克隆,它提供了“在线编写PHP代码”作为个人练习的可能性。

  • 我在文本区域编写一些代码
  • 代码在服务器端以某种方式执行
  • 输出被返回
  • 我想要的输出是完全一样的,如果由apache实例提供,所有的错误和警告我的代码生成。

    有一个现有的框架服务于网站的网页(前端控制器,orm等),所以我可以在PHP INI中使用禁用功能。 或者一切都不可用。

    我尝试将输入保存在一个文件中,然后使用如下所示的exec运行它:

    exec("php -c mycustomphpinifile input.php 2>&1 > output.txt"); 
    

    但输出的错误与apache不一样。

    我试图采用的最终解决方案是使用httpd.conf或.htaccess中的php_value或php_admin_value,以禁用危险函数的整个列表(如您所想象的)。

    然而...

    php_value disable_functions "my,functions,comma,separated"
    

    并不适用于如此庞大的清单。 我必须禁用类似2k函数的东西:htaccess中的php_value是否存在任何缓冲区大小问题? 任何人都可以猜测这个问题的解决方案?


    根据PHP文档,除了在一个php.ini文件中,你不能使用disable_functions设置,所以我很惊讶这个工作。

    如果您需要每个虚拟主机或每个目录对函数的限制,我会建议使用PHP-FPM的单独实例,每个实例都可以有自己的php.ini 。 它还提供了额外的安全优势,例如每个守护进程实例的完整沙盒。


    这不能在.htaccess完成。 更多信息在这里。

    但它似乎确实可以这样做。 请参阅public_html中的.htaccess中指出的部分添加以下内容:'here:

    php_flag short_open_tag Off
    php_flag register_globals Off
    php_flag display_errors Off
    php_flag magic_quotes_gpc Off
    php_value date.timezone "Europe/Athens"
    php_value session.save_path "/absolute/path/to/writable/folder/one_level_up_of/public_html"
    

    注意它的地方:

    php_value disable_functions“system,exec,passthru,shell_exec,suexec,dbmopen,popen,proc_open,disk_free_space,diskfreespace,set_time_limit,leak”

    关于这个脚注:

    这些设置只能通过默认的php.ini文件进行更改,如果没有根据需要进行配置,并且您还没有访问php.ini联系人到您的托管服务提供商为您设置它们!

    编辑:另外,你有访问实际的Apache2虚拟主机配置? 如果是这样,那么你可能想研究如何使用suhosin.executor.func.blacklist ; 看到这个页面。 似乎这是一种更好的方法,以每个主机/域为基础禁用PHP功能。 甚至可以通过<Directory><Location>

    <VirtualHost 127.0.0.1>
    ServerAlias www.test.com
    ServerAdmin webmaster@test.com
    DocumentRoot /home/test/public_html
    
    php_admin_value suhosin.executor.func.blacklist "passthru, show_source, shell_exec, system, pcntl_exec, popen, pclose, proc_open, proc_nice, proc_terminate, proc_get_status, proc_close, leak, apache_child_terminate, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_setuid, escapeshellcmd, escapeshellarg"
    
    </VirtualHost>
    

    您需要在您的vhost.conf文件或您的.htaccess文件中使用php_admin_value而不是php_value

    <Directory /your/application/dir>
        AllowOverride None
        DirectoryIndex index.html index.htm index.php
        php_flag log_errors on
        php_flag display_errors off
        php_value error_reporting 3
        php_value memory_limit 128M
        php_admin_value upload_tmp_dir "/your/application/dir/imagecache"
        php_value max_execution_time 10
        php_admin_value disable_functions "exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source"
    </Directory>
    
    链接地址: http://www.djcxy.com/p/58923.html

    上一篇: Disable php functions within htaccess

    下一篇: MAMP php5 strict standards