我想创建一个自己的静态文件视图,该视图返回GET请求中定义的文件。文件必须位于额外目录中。该网址必须与/e?s=NAME_OF_FILE
类似。我的问题是,黑客可以像/e?s=/PATH/TO/DATABASE
一样使用它从服务器获取任何文件。我已经有了解决方法,但我认为有更好的解决方案。
我的代码:
path = os.path.abspath(os.path.join(script_path, filename))
if path.startswith(script_path):
# Good
else:
# Bad
这是针对“隐藏的静态文件”,不应由服务器处理。
答案 0 :(得分:3)
你在做什么并没有多大帮助。你可以做的一些事情 -
/e?s=MD5_HASH_OF_FILENAME
。这样做会让“黑客”极难“猜测”文件名。蛮力无济于事,因为MD5不易猜测。因此,实际上,只有那些已经发送此URL的人才能访问它。