使用$ _GET路径显示图像是否安全? 例如,使用以下格式:image.php?path = / images / example.jpg
答案 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)
完全是的。没有问题,黑客无法提供错误的代码,什么可以破解您的页面或使用您的数据库。但要注意其他一些因素。