これはかなり安全ですか?私が逃した何か?ユーザー入力が含まれています
$page = sprintf("%s/%s.php", "pages", $_GET['page']);
if (file_exists($page)) {
include $page;
}
else {
echo "The page '$page' does not exist =(";
}
(はい、あなたがそれを使用することができます)
これはかなり安全ですか?私が逃した何か?ユーザー入力が含まれています
$page = sprintf("%s/%s.php", "pages", $_GET['page']);
if (file_exists($page)) {
include $page;
}
else {
echo "The page '$page' does not exist =(";
}
(はい、あなたがそれを使用することができます)
、ユーザーが任意に、彼らはのように感じるものは何でもページをロードすることができますので、それは安全ではないのです。あなたが確実な場合
は$_GET['page']
には/
または..
ありませんし、訪問者がpages
ディレクトリ内の任意のPHPファイルを表示することが許可されていることを、私はそれは大丈夫だと思います。あなたは簡単にこのような何かを行うことによって、すべての許可されたページのリストを取得することができ
$page = $_GET['page'] . '.php';
if(in_array($page, $all_pages)) {
include('pages/' . $page);
}
:
利用basename()供給されて何のパス情報がありませんことを確認する:
$page = sprintf("%s/%s.php", "pages", basename($_GET['page']));
if (file_exists($page)) {
include $page;
}
else {
echo "The page '$page' does not exist =(";
}
スラッシュ、スペース、ドット、またはファイルシステムでディレクティブとして使用できるものを削除することをお勧めします。 – thesmart