我正在为CMS编写一个插件来处理图像(调整大小)。如何确保只有某些目录可以使用?
我希望用户能够定义他们希望脚本查看的目录(并查找所有图像)。
我知道我可以要求$_POST['sub_directory_to_look_in']
和glob('galleries/' . $_POST['sub_directory_to_look_in'] . '/*.jpg');
并确保$_POST['sub_directory_to_look_in']
没有'../'
,但这样做有什么安全问题吗?
我调查了basedir
功能,但不确定这是否有帮助
答案 0 :(得分:1)
为了安全起见,请使用与目标目录有关的唯一标识密钥(例如用户标识的盐渍哈希)在用户及其内容之间进行映射。
这样,您的查询参数甚至不包含有关您的基础架构的信息,而只包含有关要传输的数据的信息,包括目标目标的类型(不是它应该位于的位置,而是应该位于相对位置的位置)。
P.S。 :如果系统用户可以浏览,您可以使用realpath
来解析给定有效路径的符号链接
http://www.php.net/manual/en/function.realpath.php