1

我正在尝试从我的(附加)域目录之外的目录中读取文件。这是我的目录结构:

public_html /
    domain /
        file_read.php
        file_write.php

    sensitive /
        file.dat

尽管我可以使用“../sensitive/file.dat”写入敏感信息,但我无法使用相同的方法进行阅读。任何想法为什么?

我没有使用绝对路径,因为它会出现在 html 源代码中。public_html 所属的域未被使用。

[编辑] 按要求共享一些代码:

file_write.php(敏感的也会有图片):

mkdir ("../sensitive/dir", 0755);
copy ("resource/in/root/file.jpg", "../sensitive/dir/file.jpg");
move_uploaded_file ($_FILES['file']['tmp_name'], "../sensitive/dir/newfile.jpg");

file_read.php(什么都不显示)

<img src="../sensitive/dir/newfile.jpg" width="400" height="400">

我正在观察敏感文件,一切都写得很好。我还手动将 newfile.jpg 的权限从 644 调整到 744 再到 755,但没有用。

4

1 回答 1

1

正如您所提到sensitive的,它在域目录之外。因此这将不起作用:

<img src="../sensitive/dir/newfile.jpg" width="400" height="400">

哪个好!否则任何人都可以www.example.com/../sensitive/all/your/files.dat

并有权访问敏感目录。

如果你想访问这个目录中的文件,你可以编写一个 php 页面,给出一些信息返回图像(确保这是安全的,否则人们将能够访问敏感目录)。

此问题提供有关输出图像的信息:Output an Image in PHP

于 2013-01-06T22:01:20.817 回答