如何防止apache执行bash脚本?任何php脚本都无法在bash中执行命令(例如,添加到我的php和html文件的链接的命令)。有办法吗??
编辑:我想到了任何bash命令,不仅仅是.sh文件
发布于 2011-02-17 08:50:04
您可能需要查看open_basedir配置参数。对你的问题不是一个真正的答案,但它是相关的。设置每个站点的basedir是个好主意,比如"/var/www/ site :/usr/share/php:/tmp“。(在每台机器上/usr/share/php可以是不同的)。
要真正回答您的问题:您也可以将其放在.htaccess中:
<Files *.sh>
ForceType 'text/plain; charset=UTF-8'
</Files>发布于 2011-03-03 13:35:10
您可以使用disable_functions指令在php.ini中禁用对特定函数的访问,例如:
disable_functions = exec,system,print
或者,如果您希望阻止PHP编辑其他文本文件的内容(如您的注释中所述),您可以使用文件系统权限来保护它们--使之使webserver用户(或PHP执行的用户)不具有对这些文件的写权限。
参考文献:
http://www.cyberciti.biz/faq/linux-unix-apache-lighttpd-phpini-disable-functions/
http://www.webhostgear.com/319.html
发布于 2011-03-03 07:45:53
Apache本身不能“执行”bash脚本或命令。我认为您真正要问的问题是,“如何防止PHP执行shell命令?”
不幸的是,这里的另外两个答案是不正确的,为实现这一点提供了不充分的解决方案。
open_basedir只影响哪些文件可以通过PHP打开,例如通过fopen()打开。您可以测试仍然可以使用以下简单代码执行shell命令:
<?php
ini_set('open_basedir', '/tmp');
system('ls');要真正限制PHP能执行什么样的shell命令,您必须使用安全模式。但是,您应该知道,PHP5.3中不推荐使用安全模式,并且肯定会在以后的版本中删除。启用安全模式限制对“不安全”功能的数目的访问,特别是exec()、system()和passthru()。
然而,您应该再次意识到,安全模式的使用是非常不鼓励的。
一旦删除了安全模式,您将不再拥有限制PHP可以执行哪些命令的手段。
https://serverfault.com/questions/236627
复制相似问题