Php 使文件系统使用的URL安全吗?

Php 使文件系统使用的URL安全吗?,php,sanitization,Php,Sanitization,我有一个前端控制器index.php,所有请求都是通过它进行的。我想根据URI从平面文件加载内容。例如,对/的请求将尝试从文件系统中读取./content/index.md,并从./content/whacky/waving/index.md中读取/whacky/waving 我是否需要清理传入的$\u服务器['REQUEST\u URI']以防攻击?例如,用户是否可以请求 我的第一个想法是剥离任何不是0-9a-z\-\/\ucode>的东西,但是为了开发,我运行内置的PHP服务器,这需要我捕获

我有一个前端控制器
index.php
,所有请求都是通过它进行的。我想根据URI从平面文件加载内容。例如,对
/
的请求将尝试从文件系统中读取
./content/index.md
,并从
./content/whacky/waving/index.md
中读取
/whacky/waving

我是否需要清理传入的
$\u服务器['REQUEST\u URI']
以防攻击?例如,用户是否可以请求

我的第一个想法是剥离任何不是
0-9a-z\-\/\ucode>的东西,但是为了开发,我运行内置的PHP服务器,这需要我捕获带有点的静态资产

我在使用PHP的
realpath()
函数时取得了进展,因为它解决了
/../
之类的问题-为了安全起见,我检查了输出以确保它位于web根目录中。当然,它不适用于不存在的文件


编辑:我不认为这是的副本,因为它没有讨论在文件系统上使用用户提供的URI可能带来的安全问题。它专注于字符集和为新文件生成slug(可以符合作者想要的任何约束),而不是安全地清理指向有效文件系统路径的URL。我认为这种差异值得问一个新问题。

可能是重复的,因为没有准确回答这个问题。。。如果您有权访问apache,则可以创建别名,然后apache将处理权限。然后,您需要允许直接(而不是通过php)提供对这些文件的请求,但这似乎是一个更简单的解决方案(即图像和css通常是如何提供的)。