PHP - 路径操作/输入验证

时间:2014-12-09 20:50:20

标签: php security validation path-manipulation

我为我开发的应用程序运行了一个灰盒子评估测试,我有一些漏洞,特定于输入验证类别中的路径操作。

我的代码中有:

if (move_uploaded_file($_FILES["file"]["tmp_name"],"contacts_load/" . $fileName)) {
    if ($import = fopen ("contacts_load/" . $fileName,"r")) {

和:

unlink("contacts_load/" . $fileName);

问题出在contacts_load/

您将在下面找到有关此内容的一些信息:

  

描述:允许用户输入来控制文件系统操作中使用的路径,可以使攻击者能够访问或修改受保护的系统资源。

     

具体情景:

     

满足以下两个条件时会发生路径操作错误:

     
      
  1. 攻击者可以指定操作中使用的路径   文件系统。

  2.   
  3. 通过指定资源,攻击者获得了一项功能       否则不允许。

  4.         

    例如,程序可能会让攻击者覆盖指定文件或使用受攻击者控制的配置运行。

如何阻止此特定方案的路径操作?

2 个答案:

答案 0 :(得分:1)

contacts_load/没有问题。用户无法修改它。

我建议你清理$_FILES["file"]["name"]This answer应该会有帮助。

答案 1 :(得分:1)

.htaccess文件?

# Protect files and directories from prying eyes.
<FilesMatch "\.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)(~|\.sw[op]|\.bak|\.orig|\.save)?$|^(\..*|Entries.*|Repository|Root|Tag|Template)$|^#.*#$|\.php(~|\.sw[op]|\.bak|\.orig\.save)$">
  Order allow,deny
</FilesMatch>

# Don't show directory listings for URLs which map to a directory.
Options -Indexes