为文件系统使用安全的URL?

时间:2015-11-13 10:00:38

标签: php sanitization

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

我是否需要清理传入的$_SERVER['REQUEST_URI']攻击?用户是否可以请求http://domain.com/../../../../etc/groups,例如?

我的第一个想法是剥离任何不是0-9a-z\-\/_的东西,但是对于开发我正在运行内置的PHP服务器,这需要我用点来捕获静态资产。

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

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

0 个答案:

没有答案