网站制作过程步骤,做网站高亮,做网站配什么绿色好看些,深圳企业建站程序Overview
攻击者可以控制 file_get_contents() 文件系统路径参数#xff0c;借此访问或修改原本受保护的文件。
Details
当满足以下两个条件时#xff0c;就会产生 path manipulation 错误#xff1a;
1.攻击者能够指定某一文件系统操作中所使用的路径。
2. 攻击者可以…Overview
攻击者可以控制 file_get_contents() 文件系统路径参数借此访问或修改原本受保护的文件。
Details
当满足以下两个条件时就会产生 path manipulation 错误
1.攻击者能够指定某一文件系统操作中所使用的路径。
2. 攻击者可以通过指定特定资源来获取某种权限而这种权限在一般情况下是不可能获得的。 例如在某一程序中攻击者可以获得特定的权限以重写指定的文件或是在其控制的配置环境下运行程序。 在这种情况下攻击者可以指定通过 mysql_query() 进入程序的值这一数值用于通过 file_get_contents() 访问文件系统资源。
例 1 下面的代码使用来自于 HTTP 请求的输入来创建一个文件名。程序员没有考虑到攻击者可能使用像 ../../tomcat/conf/server.xml 一样的文件名从而导致应用程序删除它自己的配置文件。 $rName $_GET[reportName];
$rFile fopen(/usr/local/apfr/reports/ . rName,a);
unlink($rFile);
示例 2以下代码使用来自于配置文件的输入来决定打开哪个文件并返回给用户。如果程序以足够的权限运行且恶意用户能够篡改配置文件那么他们可以通过程序读取系统中以扩展名 .txt 结尾的任何文件。
$filename $CONFIG_TXT[sub] . .txt;
$handle fopen($filename,r);
$amt fread($handle, filesize($filename));
echo $amt; ...
Recommendations
防止 Path Manipulation 的最佳方法是采用一些间接手段创建一个必须由用户选择的合法值的列表。通过这种方法就不能直接使用用户提供的输入来指定资源名称。 但在某些情况下这种方法并不可行因为这样一份合法资源名的列表过于庞大维护难度过大。因此在这种情况下程序员通常会采用执行拒绝列表的办法。在输入之前拒绝列表会有选择地拒绝或避免潜在的危险字符。但是任何这样一个列表都不可能是完整的而且将随着时间的推移而过时。更好的方法是创建一个字符列表允许其中的字符出现在资源名称中且只接受完全由这些被认可的字符组成的输入。