为什么要用安全模式?
什么是安全模式?
为了解决一些共享服务器上的安全问题而设立的模式,有一些文件操作的属主检查和一些函数的限制等等。在一些ISP供应商提供的服务器上面,一台服务器往往运行了N个web site,所以为了保证每个站点以及操作系统的安全,这些服务器往往启用了安全模式。
有什么影响?
安全模式才初衷是为了保证操作系统的安全性以及各个web site的安全性。操作系统的安全性可以防止用户恶意的调用一些系统命令以及限制一些文件的访问,所以会限制了exec、system等函数有一个目录检查,如果执行的命令在safe_mode_exec_dir 下面才可以被允许执行。其次会限制一些文件操作的相关函数,比如fopen、mkdir、copy、unlink、link、rename、chown等,这里会检查被操作的目录或者文件是否与被执行的脚本有相同的 UID(所有者)。其他的影响请参看手册/安全/安全模式。
真的有用吗?
正如手册所说:在PHP这一层解决服务器的安全性问题,似乎不太靠谱。对于ISP提供商来说,启用安全模式是必须的,但是还需要其他的安全性限制,比如限制配置disable_functions、disable_classes,每个用户建立自己的执行账户等。而对于公司的服务器来说,没必要启用安全模式,但是代码的安全要严格查询,尤其是一些根据用户的输入来处理对应的文件,这一步要检查是否有漏掉导致引入了一个系统文件等。