使用 $_GET 作为路径显示图像是否安全?例如使用这种格式:image.php?path=/images/example.jpg
问问题
409 次
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 回答