使用$ _GET路径显示图像是否安全?

时间:2013-04-30 10:46:05

标签: php security

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

3 个答案:

答案 0 :(得分:2)

是的,你可以,只要确保你使用isset,这样如果有人弄乱你的URL,它就不会抛出未定义的索引,你也需要检查路径是否有效,否则显示其他图像,如通过在alt属性

中书写文字找不到图像
if(isset($_GET['index'])) {
   echo '';  
}

要寻找的要点: -

  • 任何人都可以修改网址
  • 您必须清理价值
  • 路径经常会被更改,所以如果找不到图片,请务必使用alt文字
  • 如果您不进行消毒,将导致黑客容易入侵
  

Inshort我建议你 不要这样做

答案 1 :(得分: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
?>

答案 2 :(得分:0)

完全是的。没有问题,黑客无法提供错误的代码,什么可以破解您的页面或使用您的数据库。但要注意其他一些因素。