代码之家  ›  专栏  ›  技术社区  ›  anonymous coward

确保用户定义的路径在PHP中是安全的

  •  7
  • anonymous coward  · 技术社区  · 15 年前

    我正在用PHP实现一个简单的目录列表脚本。

    echo 故意否定结果。

    $f = $_GET["f"];
    if(! $f) {
        $f = "/";
    }
    // make sure $f is safe
    $farr = explode("/",$f);
    $unsafe = false;
    foreach($farr as $farre) {
        // protect against directory traversal
        if(strpos($farre,"..") != false) {
            $unsafe = true;
            break;
        }
        if(end($farr) != $farre) {
            // make sure no dots are present (except after the last slash in the file path)
            if(strpos($farre,".") != false) {
                $unsafe = true;
                break;
            }
        }
    }
    

    1 回复  |  直到 15 年前
        1
  •  9
  •   Tomalak    15 年前

    可能是 realpath()

    realpath() 展开所有符号链接 并解析对 '/./' '/../' '/' 小说中的人物 输入路径,并返回