1

我们都知道在 $_GET["filename"] 中使用 ".." 可以访问较低级别的文件结构

require("/folderwithtrustedfiles/" . $_GET["filename"]);

我的问题是:如果folderwithtrustedfiles中的所有文件都是受信任的并且可以满足要求,这是否可以被认为是安全的,或者除了 .. 之外还有其他技巧来包含来自其他文件夹的文件吗?

if(strpos($_GET["filename"], "..") === false)
require("/folderwithtrustedfiles/" . $_GET["filename"]);
4

1 回答 1

1

您可以键入以下网址:

 http://yourserver.com/index.php?file=../config/db

我会使用realpath(). 像这样:

 $filename = __DIR__ . '/content/' . $_GET['file'];
 if(strpos(realpath($filename), __DIR__ . '/content/') !== 0) {
     die('bad path');
 }
于 2013-07-08T09:47:24.433 回答