8.5. 安全模式

PHP的safe_mode选项的目的是为了解决本章所述的某些问题。但是,在PHP层面上去解决这类问题从架构上来看是不正确的,正如PHP手册所述(http://php.net/features.safe-mode)。

当安全模式生效时,PHP会对正在执行的脚本所读取(或所操作)文件的属主进行检查,以保证与该脚本的属主是相同的。虽然这样确实可以防范本章中的很多例子,但它不会影响其它语言编写的程序。例如,使用Bash写的CGI脚本:

#!/bin/bash

echo "Content-Type: text/plain"

echo ""

cat /home/victim/inc/db.inc

Bash解析器会去关心甚至检查PHP配置文件中的打开安全模式的配置字符串吗?当然不会。同样的,该服务器支持的其它语言,如Perl,Python等都不会去关心这个。    本章中的所有例子可以很简单地被改编成其它编程语言。

另一个典型的问题是安全模式不会拒绝属于WEB服务器文件的访问。这是由于一段脚本可以用于建立另一段脚本,而新脚本是属于WEB服务器的,因此它可以访问所有属于WEB服务器的文件:

<?php

$filename = 'file.php';

$script = '<?php

header(\'Content-Type: text/plain\');

readfile($_GET[\'file\']);

?>';

file_put_contents($filename, $script);

?>

上面的脚本建立了下面的文件:

<?php

header('Content-Type: text/plain');

readfile($_GET['file']);

?>

由于该文件是由Web服务器所建立的,因此它的属主是Web服务器(Apache一般以nobody用户运行):

$ ls file.php

-rw-r--r--  1 nobody nobody 72 May 21 12:34 file.php

因此,这个脚本可以绕过很多安全模式所提供的安全措施。即使打开了安全模式,攻击者也能显示一些信息如保存在/tmp目录内的会话信息,这是由于这些文件是属于Web服务器的(nobody)。

PHP的安全模式确实起到了一些作用,可以认为它是一种深度防范机制。可是,它只提供了可怜的保护,同时在本章中也没有其它安全措施来替代它。

php 安全基础 第八章 共享主机 安全模式相关推荐

  1. [导入]php 安全基础 第八章 共享主机 文件系统浏览

    8.4. 文件系统浏览 除了能在共享服务器上读取任意文件之外,攻击者还能建立一个可以浏览文件系统的脚本.由于你的大多数敏感文件不会保存在网站主目录下,此类脚本一般用于找到你的源文件的所在位置.请看下例 ...

  2. 计算机应用基础实验指导实验八,计算机应用基础第八章上机实验

    计算机应用基础第八章上机实验 (28页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.90 积分 第八章 上机实验n 实验一 键盘指法练习 n 实验二 ...

  3. 哪种主机更适合初创公司租用?云主机与共享主机

    作为一家初创公司,您需要分析您的业务和主机租用类型的需求,以便轻松支持网站以及适当的流量管理.在服务商提供的主机类型中,由于云主机与共享主机是大多初创公司建站的首要选择.所以在本文中,我们将讨论哪种主 ...

  4. 网络访问:本地账号的共享和安全模式设置身份验证后自动更改其他验证的处理方法 ...

    网络访问:本地账号的共享和安全模式 设置成为"仅来宾-本地用户以来宾身份验证"后自动更改成"经典:本地用户以自己的身份验证"的处理方法 我们为何要修改网络访问: ...

  5. 电脑本机连了VPN 在虚拟机中没有连接 如何虚拟机共享主机VPN连接

    电脑本机连了VPN 在虚拟机中没有连接 如何虚拟机共享主机VPN连接 1.首先vm选择桥接模式 2.clash打开同局域网允许连接,并且记住Clash端口 3.ping一下当前主机的ip,比如我主机是 ...

  6. linux 恶意软件检测,Linux恶意软件检测共享主机

    我正在尝试在共享主机上安装优秀的http://www.rfxn.com/projects/linux-malware-detect/. 我已将激励更改为我的本地目录,但它在创建符号链接时出错,只读取/ ...

  7. 在共享主机上使用Screen for Human Beings:Byobu

    在共享主机上使用Screen for Human Beings:Byobu 在共享主机上使用Screen for Human Beings:Byobu | I'm TualatriX me Comme ...

  8. Linux基础入门--进程间通信--共享内存

    Linux基础入门--进程间通信--共享内存 1.共享内存IPC原理 2.共享内存管理 1.共享内存IPC原理 共享内存进程间通信机制主要用于实现进程间大量的数据传输,共享内存是在内存单独开辟的一段内 ...

  9. Mysql数据库基础第八章:窗口函数和公用表表达式(CTE)

    Mysql数据库基础系列 软件下载地址 提取码:7v7u 数据下载地址 提取码:e6p9 mysql数据库基础第一章:(一)数据库基本概念 mysql数据库基础第一章:(二)mysql环境搭建 mys ...

最新文章

  1. 马士兵java note 5
  2. nyoj 10 skiing(DAG上的最长路,备忘录方法)
  3. LeetCode 296. 最佳的碰头地点(坐标独立+中位数的地方最近)
  4. [ES6] 细化ES6之 -- 块级作用域
  5. pytorch实战从入门到精通第二部分——卷积神经网络
  6. 什么是IEC 61508?
  7. java 反射 asm,Java反射工具包reflectasm
  8. MySQL 常用函数大全
  9. Eclipse+OpenCV3.1.0 的环境搭建
  10. (网络编程)SOCKET应用实例
  11. eclipse配置Tomcat9
  12. 网上赚钱新途径:这些方法简单又有效!
  13. H5多媒体视频播放器的使用及常用属性
  14. Fcitx使用搜狗词库与皮肤
  15. java里面add报错,java错误
  16. 【oracle】查询===Oracle数据库 子查询(嵌套查询)简单例子
  17. 这个年龄计算程序相当不科学,体验还是差差哒
  18. 何谓”透传“? UART串口WIFI模块做”透传“的目的及其局限性
  19. java计算机毕业设计的洗衣店订单管理系统源码+数据库+系统+lw文档+mybatis+运行部署
  20. 基于单片机的传送带计数系统

热门文章

  1. Linux的文件压缩与解压缩
  2. Spring源码解析 -- SpringWeb请求映射Map初始化
  3. c语言缩写一个人的名字,用C语言输入一个人的英文名字统计个数输出
  4. 蓝牙怎么区分单模和双模_小院闲聊#01#——蓝牙的发展和不同蓝牙之间的关系...
  5. v9更新系统后为何显示服务器连接,V9服务器
  6. 将图片文件通过byte[]字节数组Base64加密后给前端显示
  7. html 文本第一行显示,html – 在第一行后更改文本对齐
  8. java远程执行命令报错java.io.IOException: Cannot run program “ifconfig“: error=2, No such file or directory
  9. html表头跟随滚动,JS实现table表格固定表头且表头随横向滚动而滚动_心善_前端开发者...
  10. android+大富翁+局域网,【图片】大富翁6局域网(LAN)多人联机教程(求精)_大富翁吧_百度贴吧...