PHP-路径操作/输入验证

PHP-路径操作/输入验证,php,security,validation,path-manipulation,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); 问题出在联

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

我的代码中有:

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

unlink("contacts_load/" . $fileName);
问题出在
联系人\u load/

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

说明:允许用户输入控制文件系统操作中使用的路径可能使攻击者能够访问或修改其他受保护的系统资源

特定场景:

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

  • 攻击者可以指定服务器上的操作中使用的路径 文件系统

  • 通过指定资源,攻击者可以获得以下功能: 否则是不允许的

  • 例如,该程序可能使攻击者能够覆盖指定的文件或使用攻击者控制的配置运行


    如何防止此特定场景中的路径操纵

    联系人加载时没有问题。用户无法修改它

    不过,我确实建议您清理
    $\u文件[“文件”][“名称”]
    。应该会有帮助。

    .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
    
    #保护文件和目录免受窥探。
    命令允许,拒绝
    #不显示映射到目录的URL的目录列表。
    选项-索引
    
    $fileName
    从哪里来?从这里:
    $fileName=Date(“YmdHis”)。“\uu”。$\u FILES[“file”][“name”]但问题在路径中(
    联系人加载/
    )。
    $\u文件[“文件”][“名称”]
    已包含请求中提供的文件名的
    基本名称。问题在
    $\u文件[“文件”][“tmp\u名称”]
    中。它是用户提供的,是一个路径/文件。你说得对,我错了,问题出在文件名上,因为攻击者可能会提供一个文件名,如“../../tomcat/conf/server.xml”,并在文件系统中造成问题。问题出在文件路径上,而不是文件名上。@JuanSedano用户无法控制它。您有什么顾虑?您是对的,我很困惑,问题在于文件名,因为攻击者可能会提供文件名,如“../../tomcat/conf/server.xml”,并导致文件系统出现问题。