0

パスに $_GET を使用して画像を表示しても安全ですか? たとえば、次の形式を使用します: image.php?path=/images/example.jpg

4

3 に答える 3

2

basename($_GET['path'])ファイル名で使用した後にパスが存在することを確認すると、完全に安全です。画像フォルダーへのパスも定義します。

次に、 が付いた画像であることを確認しgetimagesize($path)ます。失敗した場合は、ファイル名を見つからない画像などに変更します。

<?php 
$path_to_images = '/images/';
$not_found_img  = './path/to/not_found_image.jpg';

// check path is set and not empty
if(empty($_GET['path'])){
    $path = $not_found_img;
}else{
    $path = $path_to_images.basename($_GET['path']);

    // check that image exists
    if(!file_exists($path)){
        $path = $not_found_img;
    }else{
        //Check if image
        if($img_size = getimagesize($path)) {
            //alls good $path validated
        }else{
            $path = $not_found_img;
        }
    }
}

// do somthing with your $path
?>
于 2013-04-30T11:09:30.960 に答える
2

はい、できますisset。誰かがあなたの URL をいじった場合に未定義のインデックスがスローされないように使用してください。また、パスが有効かどうかを確認する必要がありaltます。

if(isset($_GET['index'])) {
   echo '';  
}

探すべきポイント: -

  • 誰でもURLをいじることができます
  • 値をサニタイズする必要があります
  • パスは頻繁に変更されるためalt、画像が見つからない場合は必ずテキストを使用してください
  • サニタイズしないと、ハッカーの簡単な侵入につながります

要するに、そうしないことをお勧めします

于 2013-04-30T10:48:14.873 に答える