易截截图软件、单文件、免安装、纯绿色、仅160KB

php 安全模式的不足

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遍历整个目录的文件以及文件夹

最近去面试PHP程序员 出了一道这样的题 “php遍历整个目录的文件以及文件夹 封装成函数”顺便也就贴了上来。需要的朋友可以拿去用用,仅供学习交流使用。如有不恰当的地方还请各位高手“嘴下留人” 啊!
<?php
$path=$_SERVER["DOCUMENT_ROOT"];
$path=str_replace("/","\\",$path);
$path="$ ......

Linux中安装PHP 5教程

第一步 安装MySQL
[root@localhost usr]# groupadd mysql
[root@localhost usr]# useradd -g mysql mysql
[root@localhost usr]# cd /usr/local
[root@localhost local]# tar -zxvf mysql-5.0.51.tar.gz
[root@localhost local]# cd mysql-5.0.51
[root@localhost mysql-5.0.51# ./configure --prefix=/usr/local/my ......

如何使用PHP开发高效的WEB系统


PHP是一个很优秀的工具,它可以简单,也可以复杂。不一样的项目,应该用不一样的PHP。
小项目 – 简单而直接的PHP
一般对于一个功能页面在20以下的网站,我们可以用一个很简单的框架结构来写。在这个规模上,我建议是使用比较直接的面向过程编码方法,原因很简 单,没有必要把class文件弄的N  ......

PHP函数(2)

in_array(value,array,type)        //检查一个值是否在数组中,type可选,设置为true检查类型是否相同,分大小写
例:
$os = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $os)) {
echo "Got Irix"; ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号