搜索
首页php教程php手册php中的安全模式是指的什么?

手册如是说:
章 24. 安全模式
目录
被安全模式限制或屏蔽的函数
PHP 的安全模式是为了试图解决共享服务器(shared-server)安全问题而设立的。在结构上,试图在 PHP 层上解决这个问题是不合理的,但修改 WEB 服务器层和操作系统层显得非常不现实。因此许多人,特别是 ISP,目前使用安全模式。


表格 24-1. 控制安全模式的设置选项有:

设置选项 默认值
safe_mode Off
safe_mode_gid 0
safe_mode_include_dir ""
safe_mode_exec_dir 1
open_basedir ""
safe_mode_allowed_env_vars PHP_
safe_mode_protected_env_vars LD_LIBRARY_PATH
disable_functions ""


当 safe_mode 设置为 on,PHP 将检查当前脚本的拥有者是否和将被文件函数操作的文件的拥有者相匹配。例如: -rw-rw-r-- 1 rasmus rasmus 33 Jul 1 19:20 script.php
-rw-r--r-- 1 root root 1116 May 26 18:01 /etc/passwd

运行 script.php readfile('/etc/passwd');
?>

如果安全模式被激活,则将会导致以下错误: Warning: SAFE MODE Restriction in effect. The script whose uid is 500 is not
allowed to access /etc/passwd owned by uid 0 in /docroot/script.php on line 2



同时,或许会存在这样的环境,在该环境下,宽松的 GID 检查已经足够,但严格的 UID 检查反而是不适合的。您可以用 safe_mode_gid 选项来控制这种检查。如果设置为 On 则进行宽松的 GID 检查;设置为 Off(默认值)则进行 UID 检查。

除了 safe_mode 以外,如果您设置了 open_basedir 选项,则所有的文件操作将被限制在您指定的目录下。例如:
php_admin_value open_basedir /docroot


如果您在设置了 open_basedir 选项后运行同样的 script.php,则其结果会是: Warning: open_basedir restriction in effect. File is in wrong directory in
/docroot/script.php on line 2



您也可以单独地屏蔽某些函数。请注意 disable_functions 选项不能在 php.ini 文件外部使用,也就是说您无法在 httpd.conf 文件的按不同虚拟主机或不同目录的方式来屏蔽函数。 如果我们将如下内容加入到 php.ini 文件: disable_functions readfile,system

则我们会得到如下的输出: Warning: readfile() has been disabled for security reasons in
/docroot/script.php on line 2



被安全模式限制或屏蔽的函数
以下安全模式列表可能不完整或不正确。

表格 24-2. 安全模式限制函数

函数名 限制
dbmopen() 将检查您将要操作的文件/目录与正在执行的脚本是否有相同的 UID。
dbase_open() 将检查您将要操作的文件/目录与正在执行的脚本是否有相同的 UID。
filepro() 将检查您将要操作的文件/目录与正在执行的脚本是否有相同的 UID。
filepro_rowcount() 将检查您将要操作的文件/目录与正在执行的脚本是否有相同的 UID。
filepro_retrieve() 将检查您将要操作的文件/目录与正在执行的脚本是否有相同的 UID。
ifx_*() sql_safe_mode 限制, (!= safe mode)
ingres_*() sql_safe_mode 限制, (!= safe mode)
mysql_*() sql_safe_mode 限制, (!= safe mode)
pg_loimport() 将检查您将要操作的文件/目录与正在执行的脚本是否有相同的 UID。
posix_mkfifo() 将检查您将要操作的目录和正在执行的脚本是否有相同的 UID。
putenv() 遵循 ini 设置的 safe_mode_protected_env_vars 和 safe_mode_allowed_env_vars 选项。请参考 putenv() 函数的有关文档。
move_uploaded_file() 将检查您将要操作的文件/目录与正在执行的脚本是否有相同的 UID。
chdir() 将检查您将要操作的目录和正在执行的脚本是否有相同的 UID。
dl() 该函数在安全模式中已被屏蔽。
backtick operator 该函数在安全模式中已被屏蔽。
shell_exec()(在功能上和 backticks 函数相同) 该函数在安全模式中已被屏蔽。
exec() 您只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因,目前不能在可执行对象的路径中使用 ..。
system() 您只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因,目前不能在可执行对象的路径中使用 ..。
passthru() 您只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因,目前不能在可执行对象的路径中使用 ..。
popen() 您只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因,目前不能在可执行对象的路径中使用 ..。
mkdir() 将检查您将要操作的目录和正在执行的脚本是否有相同的 UID。
rmdir() 将检查您将要操作的文件/目录与正在执行的脚本是否有相同的 UID。
rename() 将检查您将要操作的文件/目录与正在执行的脚本是否有相同的 UID。 将检查您将要操作的目录和正在执行的脚本是否有相同的 UID。
unlink() 将检查您将要操作的文件/目录与正在执行的脚本是否有相同的 UID。 将检查您将要操作的目录和正在执行的脚本是否有相同的 UID。
copy() 将检查您将要操作的文件/目录与正在执行的脚本是否有相同的 UID。 将检查您将要操作的目录和正在执行的脚本是否有相同的 UID。 (on source and target)
chgrp() 将检查您将要操作的文件/目录与正在执行的脚本是否有相同的 UID。
chown() 将检查您将要操作的文件/目录与正在执行的脚本是否有相同的 UID。
chmod() 将检查您将要操作的文件/目录与正在执行的脚本是否有相同的 UID。 另外,您不能设置 SUID、SGID 和 sticky bits
touch() 将检查您将要操作的文件/目录与正在执行的脚本是否有相同的 UID。 将检查您将要操作的目录和正在执行的脚本是否有相同的 UID。
symlink() 将检查您将要操作的文件/目录与正在执行的脚本是否有相同的 UID。 将检查您将要操作的目录和正在执行的脚本是否有相同的 UID。 (注意:仅测试 target)
link() 将检查您将要操作的文件/目录与正在执行的脚本是否有相同的 UID。 将检查您将要操作的目录和正在执行的脚本是否有相同的 UID。 (注意:仅测试 target)
getallheaders() 在安全模式下,以“authorization”(区分大小写)开头的头信息将不会被返回。警告:getallheaders() 无法在 aol-server 下实现!
header() 在安全模式下,如果您设置了 WWW-Authenticate,当前脚本的 uid 将被添加到该头信息的 realm 部分。
highlight_file(), show_source() 将检查您将要操作的文件/目录与正在执行的脚本是否有相同的 UID。 将检查您将要操作的目录和正在执行的脚本是否有相同的 UID。 (注意,仅在 4.2.1 版本后有效)
parse_ini_file() 将检查您将要操作的文件/目录与正在执行的脚本是否有相同的 UID。 将检查您将要操作的目录和正在执行的脚本是否有相同的 UID。 (注意,仅在 4.2.1 版本后有效)
任何使用 php4/main/fopen_wrappers.c 的函数 ??



声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
php怎么把负数转为正整数php怎么把负数转为正整数Apr 19, 2022 pm 08:59 PM

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

番茄小说uid在什么地方查看番茄小说uid在什么地方查看Feb 28, 2024 pm 04:25 PM

在使用番茄小说软件时,登录自己的账号这样您可以享受到更多个性化的服务和便利。登录账号后,您还能查看到自己的UID(用户唯一标识符),这是一个非常重要的信息,有时候这个uid是非常重要的,那么在番茄小说中自己的UID究竟在哪里查看呢?想要了解的用户们就快来跟着本文一起详细了解查看步骤吧!番茄小说uid在什么地方查看答案:【番茄小说】-【我的】-【反馈与帮助】-【意见反馈】-【点击5下】。具体步骤:1、首先打开番茄小说软件,进入到首页中后我们需要点击右下角的【我的】;2、然后在我的页面中我们滑动到页

php怎么判断有没有小数点php怎么判断有没有小数点Apr 20, 2022 pm 08:12 PM

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

php怎么设置implode没有分隔符php怎么设置implode没有分隔符Apr 18, 2022 pm 05:39 PM

在PHP中,可以利用implode()函数的第一个参数来设置没有分隔符,该函数的第一个参数用于规定数组元素之间放置的内容,默认是空字符串,也可将第一个参数设置为空,语法为“implode(数组)”或者“implode("",数组)”。

php怎么将url的参数转化成数组php怎么将url的参数转化成数组Apr 21, 2022 pm 08:50 PM

转化方法:1、使用“mb_substr($url,stripos($url,"?")+1)”获取url的参数部分;2、使用“parse_str("参数部分",$arr)”将参数解析到变量中,并传入指定数组中,变量名转为键名,变量值转为键值。

一行命令找出 Linux 中所有真实用户一行命令找出 Linux 中所有真实用户Feb 18, 2024 pm 05:50 PM

哈喽大家好,我是咸鱼。接触过Linux的小伙伴们都知道在Linux(或者说类Unix)中,有三种类型的用户:超级用户(UID为0):即root用户,拥有最高权限。系统用户(UID为1~999):系统内建用户,用于运行系统服务和守护进程。普通用户(UID为1000~60000):为了让使用者能够使用Linux系统资源而建立的,用户新建的账号一般就是普通账号。那么现在问题来了,如何快速找出Linux中的真实用户(root用户和普通用户)?正式开始之前,我们先介绍一个工具——getent。getent

php怎么去除首位数字php怎么去除首位数字Apr 20, 2022 pm 03:23 PM

去除方法:1、使用substr_replace()函数将首位数字替换为空字符串即可,语法“substr_replace($num,"",0,1)”;2、用substr截取从第二位数字开始的全部字符即可,语法“substr($num,1)”。

深入了解Linux用户UID和GID的查看方式深入了解Linux用户UID和GID的查看方式Mar 20, 2024 pm 12:06 PM

用户UID和GID是Linux系统中用来标识用户和组的数字标识符。在使用Linux系统时,我们经常需要查看用户的UID和GID,以便管理用户和文件的权限。本文将深入介绍Linux系统中查看用户UID和GID的多种方式,并附上具体的代码示例。一、通过命令查看用户UID和GID查看当前用户的UID和GID:id运行以上命令后,系统会显示当前用户的UID、GID以

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器