ode和safe_mode_gid时,safe_mode_include_dir为避免UID/GID检查提供了一个安全的避风港。当打开的文件位于指定的目录中时,将忽略UID/GID检查。
l safe_mode_exec_dir (string)
作用域:PHP_INI_SYSTEM;默认值:Null。
启用安全模式时,safe_mode_exec_dir参数会限制通过exec()函数只能执行指定目录中的可执行程序。例如,如果希望限制为只能执行/usr/local/bin下的函数,可以使用指令:
l safe_mode_allowed_env_vars (string)
作用域:PHP_INI_SYSTEM;默认值:PHP_。
启用安全模式时,可以使
用safe_mode_allowed_env_vars指令限制用户能通过PHP脚本修改哪些操作系统级环境变量。例如,如下设置safe_mode_allowed_env_vars指令,则只允许修改以PHP_或MYSQL_开头的变量:
要记住,这个指令的值为空表示用户可以修改任何环境变量。
l safe_mode_protected_env_vars (string)
作用域:PHP_INI_SYSTEM;默认值:LD_LIBRARY_PATH。
利用safe_mode_protected_env_vars指令,可以明确地防止修改某些环境变量。例如,如果希望防止用户修改PATH和LD_LIBRARY_PATH变量,可以使用以下指令:
l open_basedir (string)
作用域:PHP_INI_SYSTEM;默认值:Null。
与Apache的DocumentRoot相似,PHP的open_basedir指令可以建立一个基目录,所有文件操作都限制在此目录中。这会防止用户进入到服务器的其他受限区中。例如,假设所有Web素材都位于目录/home/www中。为防止用户通过一些简单的PHP命令查看以及可能操作诸如etc/passwd等文件,可以考虑将open_basedir设置为:
注意,这个指令的影响并不依赖于safe_mode指令。
l disable_functions (string)
作用域:PHP_INI_SYSTEM;默认值:Null。
在某些环境下,你可能希望完全禁用某些默认函数,如exec()和system()。将这些函数赋给disable_functions参数就能实现禁用,如下:
注意,这个指令的影响并不依赖于safe_mode指令。
l disable_classes (string)
作用域:PHP_INI_SYSTEM;默认值:Null。
PHP采纳了面向对象范型,根据由此提供的新功能,可以想见,用不了多久就会有非常多的类库。但是,你可能不希望启用这些类库中的某些类。通过disable_classes指令可以防止使用这些类。例如,如果希望禁用两个特定的类:administrator和janitor,可以使用如下指令:
注意,这个指令的影响并不依赖于safe_mode指令。
l ignore_user_abort (Off, On)
作用域:PHP_INI_ALL;默认值:On。
在浏览器某个页面时,也许页面完全加载之前你就退出或关闭了浏览器,这种情况是不是屡屡发生呢?通常这样做并无害处。但是,如果服务器正在更新重要的用户信息,或者正在完成一个商业交易,会怎么样呢?启用ignore_user_abort会让服务器忽略由于用户或浏览器引起的中断所造成的会话中止。
3. 语法突出显示
PHP可以突出显示源代码。通过将PHP脚本的扩展名赋为.phps(这是默认的扩展名,下面将了解到,这是可以修改的),或者利用show_source()或highlight_file()函数,就可以启用此功能。要使用.phps扩展名,需要向httpd.conf中增加以下代码:
对于突出显示的源代码,通过以下6个指令,可以控制其中字符串、注释、关键字、背景、默认文本和HTML部分的颜色。例如,通常称为“黑色”的颜色可以分别表示为rgb(0,0,0)、#000000或black。
l highlight.string (string)
作用域:PHP_INI_ALL;默认值:#DD0000。
l highlightment (string)
作用域:PHP_INI_ALL;默认值:#FF9900。
l highlight.keyword (string)
作用域:PHP_INI_ALL;默认值:#007700。
l highlight.bg (string)
作用域:PHP_INI_ALL;默认值:#FFFFFF。
l highlight.default (string)
作用域:PHP_INI_ALL;默认值:#0000BB。
l highlight.html (string)
作用域:PHP_INI_ALL;默认值:#000000。
4. 杂项
杂项这一类中只包含一个指令:expose_php。
l expose_php (On, Off)
作用域:PHP_INI_SYSTEM;默认值:On。
如果攻击者能够得到任何一条关于Web服务器的信息,都会增加他成功破坏服务器的机会。一个简单的办法是通过服务器签名获得有关服务器特点的关键信息。例如,在默认情况下,Apache会在每个响应首部中广播如下信息:
通过禁用expose_php,能防止Web服务器签名(如果启用)广播上述事实(即已经安装了PHP)。虽然还需要更多的措施来确保充分的服务器保护,但不管怎样,强烈建议保护这些服务器属性。
注解 可以在httpd.conf文件中将ServerSignature设置为Off,这会禁止Apache广播其服务器签名。
5. 资源限制
虽然PHP 5在资源处理功能方面有长足的进步,但还是要当心,应确保PHP脚本不会由于程序员或用户的动作而独占服务器资源。受这种过度耗费资源影响的三个方面是脚本执行时间、脚本输入处理时间和内存。这些方面可以通过以下3个指令来控制。
l max_
上一篇:
PHP部分常见问题总结_php代码
下一篇:
关于森林资源保护的思考