php 安全模式开启(safe_mode=on|off)

php安全模式:safe_mode=on|off
启用safe_mode指令将对在共享环境中使用PHP时可能有危险的语言特性有所限制。能够将safe_mode是指为布尔值on来启用,或者设置为off禁用。它会比较执行脚本UID(用户ID)和脚本尝试访问的文件的UID,以此做为限制机制的基础。若是UID相同,则执行脚本;不然,脚本失败。
具体地,当启用安全模式时,一些限制将生效。
php

一、全部输入输出函数(例如fopen()、file()和require())的适用会受到限制,只能用于与调用这些函数的脚本有相同拥有者的文件。例如,假定启用了安全模式,若是Mary拥有的脚本调用fopen(),尝试打开由Jonhn拥有的一个文件,则将失败。可是,若是Mary不只拥有调用fopen()的脚本,还拥有fopen()所调用的文件,就会成功。
二、若是试图经过函数popen()、system()或exec()等执行脚本,只有当脚本位于safe_mode_exec_dir配置指令指定的目录才可能。
三、HTTP验证获得进一步增强,由于验证脚本用于者的UID划入验证领域范围内。此外,当启用安全模式时,不会设置PHP_AUTH。
四、若是适用MySQL数据库服务器,连接MySQL服务器所用的用户名必须与调用mysql_connect()的文件拥有者用户名相同。
安全模式和禁用的函数

下面是启用safe_mode指令时受影响的函数、变量及配置指令的完整列表:
mysql

apache_request_headers()
backticks()和反引号操做符 
chdir()chgrp()     
chmode()    
chown()copy()     
dbase_open()    
dbmopen()dl()     
exec()     
filepro()filepro_retrieve()   
filepro_rowcount()   
fopen()header()    
highlight_file()   
ifx_*ingres_*    
link()     
mail()max_execution_time()   
mkdir()     
move_uploaded_file()mysql_*     
parse_ini_file()   
passthru()pg_lo_import()    
popen()     
posix_mkfifo()putenv()    
rename()    
zmdir()set_time_limit()   
shell_exec()    
show_source()symlink()    
system()    
touch()

如下是一些和安全模式相关的配置选项
    safe_mode_gid=on|off
    次指令会修改安全模式的行为,即从执行前验证UID改成验证组ID。例如,若是Mary和John处于相同的用户组,则Mary的脚本能够对John的文件调用fopen()。sql


    safe_mode_include_dir=string
    可使用指令safe_mode_include_dir指示多个路径,启用安全模式时在这些路径中将忽略安全模式。例如,你可使用此函数指定一个包含不一样模板的目录,致谢模板可能会继成到一些用户网站。能够指定多个目录,在基于UNIX的系统各目录用冒号分隔,在Windows中用分号分隔。shell

注意,若是指定某个路径但未包含最后的斜线,则该路径下的全部目录都会忽略安全模式设置。例如,若是设置次指令为/home/configuration,表示/home/configuration/templates/和/home/configureation/passwords都排除在安全模式限制以外。所以,若是只是要排除一个目录或一组目录不受安全模式设置的限制,要确保每一个目录都包括最后的斜线。数据库


    safe_mode_env_vars=string
    当启用安全模式时,能够只用次指令容许执行用户的脚本修改某些环境变量。能够容许修改多个变量,每一个变量之间用逗号分隔。apache


    safe_mode_exec_dir=string
    次指令指定一些目录,其中的系统程序能够经过诸如system()、exec()或passthru()等函数执行。为此必须启用安全模式。此指令有一个奇怪的地方,在全部操做系统中(包括Windows),都必须使用斜线(/)做为目录的分隔符。安全


    safe_mode_protected_env_vars=string
    此指令保护某些环境变量不能被putenv()函数修改。默认状况下,变量LD_LIBRARY_PATH是受保护的,由于若是在运行时修改这个变量可能致使不可预知的结果。关于此环境变量的更多信息,请参考搜索引擎或Linux手册。注意,本届中声明的全部便来弄个都覆盖safe_mode_allowed_env_vars指令中声明的变量。服务器

相关文章
相关标签/搜索