2

私は 404 エラー ドキュメントに取り組んでおり、サイトマップを提供するだけでなく、サーバー上に実際に存在するものに基づいて、ユーザーが探していた可能性のある Web サイトをユーザーに提案できると考えていました。

例: ユーザーが"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 に答える