0

使用 $_GET 作为路径显示图像是否安全?例如使用这种格式:image.php?path=/images/example.jpg

4

3 回答 3

2

是的,你可以,只要确保你使用它不会抛出未定义的索引,如果有人摆弄你的 URL,你还需要检查路径是否有效,否则显示其他图像,比如通过在属性isset中写入文本找不到的图像alt

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

要寻找的要点:-

  • 任何人都可以修改 URL
  • 你必须清理价值
  • 通常会更改路径,因此alt如果找不到图像,请确保使用文本
  • 如果不进行消毒,将导致黑客容易入侵

总之,我建议你不要这样做

于 2013-04-30T10:48:14.873 回答
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 回答
0

完全是的。没有问题,黑客不能给出糟糕的代码,什么可以破解你的页面或使用你的数据库。但要注意其他一些元素。

于 2013-04-30T10:53:52.397 回答