1

假设我在媒体目录中有一个名为/images/year/month/day. 我想获取这些图像的图像名称和路径,并有一个页面提供目录中的所有图像。

然后我有另一个文件夹/files,其中包含应用程序文件。相同的结构等。

文件的所有上传都被记录为数据库的一部分。图像不是通过数据库保存的,因此我想从图像下的所有子目录中读取所有文件,可能包括年月日期信息。

做这样的事情是否安全,我将如何去做?这样做时我需要寻找什么。

谢谢

4

1 回答 1

0

是的,这样做是安全的,只要您进行适当的转义。您要确保不允许在该根级媒体目录之外进行任何目录遍历,这样您的应用程序文件就不会得到服务。

您可以通过简单的障碍检查来做到这一点:

dir_to_serve = os.path.abspath(dir_to_serve) # get full path
if not dir_to_serve.startswith(media_dir): # maybe settings.MEDIA_DIR here?
    return # don't ever serve this

# code to serve from path

在 Django 中,您可以简单地将os.walk中的结果列表传递给您的模板并循环遍历它。您可能希望过滤掉模板中不希望显示的某些文件类型或目录名称。

于 2013-07-02T16:12:07.110 回答