2

我正在处理我的 404 错误文档,我在考虑的不仅仅是提供站点地图,还可以根据服务器上实际存在的内容向用户建议他可能正在寻找的网站。

示例:如果用户输入“www.example.com/foldr/site.html”,404页面可能会输出:

您的意思是“www.example.com/folder/site.html”吗?

为此,我编写了以下代码,非常适合我。我现在的问题是:使用它是否“安全”?因为基本上有人可以通过尝试各种组合来检测服务器上的所有文件。或者,黑客甚至可以使用循环遍历并列出所有类型的有效 URL 的脚本。

我应该限制这个脚本可以检测和建议的目录吗?使用一组“OK”位置,还是按文件类型?

有没有其他人已经有了这样的想法?

PHP:

// get incorrect URL that was entered
$script = explode("/",$_SERVER['SCRIPT_NAME']);
$query = $_SERVER['QUERY_STRING'];
// create vars
$match = array();
$matched = "../";
// loop through the given URL folder by folder to find the suggested location
foreach ($script as $dir) {
    if (!$dir) {
        continue;
    }
    if ($handle = opendir($matched)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                similar_text($dir, $entry, $perc); 
                if ($perc > 80) {
                    $match[$entry] = $perc;
                }
            }
        }
        closedir($handle);
        if ($match) {
            arsort($match);
            reset($match);
            $matched .= key($match)."/";
        } else {
            $matched = false;
            break;
        }
        $match = array();
    }
}
// trim and echo the result that had the highest match
$matched = trim(ltrim(rtrim($matched,"/"),"."));
echo "proposed URL: ".$_SERVER["SERVER_NAME"].$matched;
4

1 回答 1

1

是的,你可以这样看:

想象一下外面只有玻璃墙的房子,但现在是晚上。你是一个小偷(黑客),你想检查房子是否有价值(带有密码的文件、数据库连接等)。

如果您不保护(某些)文件,您将在房子的每个部分都打开灯。小偷会透过窗户看到你有战利品 - 现在他唯一要做的就是进入并拿走它。

如果你确实保护了文件,小偷甚至无法知道房子里有任何战利品,因此小偷有更高的机会移动到下一个房子。

于 2014-01-22T21:55:29.227 回答