2016-07-04 114 views
0

我创建了一个在线php编译器。问题是它使我的服务器容易受到黑客的攻击。所以我想给编译器一个单独的目录,并且只限制php脚本访问那个目录。 我试过这个拒绝php脚本访问父目录

<Directory /parentDirectory/childDirectoryOne> 
    php_admin_value open_basedir "/parentDirectory/childDirectoryOne" 
</Directory> 

但是这又产生了另一个问题。我不再能够打开网页的页面。它给了我内部的服务器错误。 如果我可以限制PHP读取,编辑或删除目录以外的文件也将工作,或者如果我可以限制PHP读取,编辑或删除有一个例外的所有文件。 我有cPanel的网站,所以我只能通过.htaccess来做到这一点。

+0

'.htaccess'文件包含网络服务器的指令,它不会以任何方式限制php,所以你仍然可以包含,显示和执行任何你想要的。 – jeroen

回答

1

这可以在操作系统级别完成。创建一个新用户,并且只允许他们访问编码目录并以该用户身份启动PHP进程。

但是你的代码是错误的open_basedir "/parentDirectory/subDir"意味着即使PHP引擎执行你的index.php脚本也不能运行,如果它不在subDir中。您可以静态编码parentDirectory或使用上面的解决方案。在apache文件中存储open_basedir值并不妨碍PHP-CLI或命令行的执行。

+0

谢谢@Zack,但我不知道如何在cpanel中做到这一点。我有一个共享Godaddy托管帐户。我们可以告诉我如何在Cpanel中使用.htaccess来做到这一点。如果你可以帮助我使用正确的代码,我从堆栈溢出中获得了该代码 –