我正在创建一个简单的文件管理器,它扫描目录并列出其中的文件和目录,包括升级三点../
。我的“root”目录是E:/wamp/www
,我不希望它允许我访问父目录。
我使用以下正则表达式:
(^E\:\/wamp\/www\/)(\.\.\/$|\.\.\/.*?(\.\.\/)+$)|(^E\:\/wamp\/www\/([^\/]+\/)+)(\.\.\/.*?(\.\.\/)+)
为了防止以下情况:
但我发现它也可以做这样的事情:
等等
我怎样才能防止这种情况并将其限制为仅使用正则表达式的E:/wamp/www
?
你可以使用realpath()
函数:realpath
从文档:
realpath()展开所有符号链接并解析对输入路径中的/./,/../和extra / characters的引用,并返回规范化的绝对路径名。
不要只依赖代码来防止文件写入不应写入的位置,在目录上设置适当的权限。