您好我想知道以下是否会构成威胁?该URL是从浏览器检查它是否是一个图片并输出它否则显示“图像不存在”。 我还没有完成if语句。但是我应该把更多的头();输出前的设置或任何其他建议,如果我错过任何一个可以使它更安全。
header('content-type: image/jpeg');
$file = urlencode('http://domain.com/images/file.jpg');
ob_start();
require_once($file);
$out = ob_get_contents();
ob_end_flush();
echo $out;
答案 0 :(得分:5)
是的,这是一个巨大的安全风险,因为您要求PHP解释远程文件。如果用户可以将任何URI传递给您的脚本,他将能够轻松控制您的服务器。
如果您的安装中提供了URL包装,则应使用cURL
函数或简单的file_get_contents
(或fopen
)调用。
答案 1 :(得分:2)
你绝对不应该使用require_once。
使用readfile()。
header('content-type: image/jpeg');
$file = urlencode('http://domain.com/images/file.jpg');
readfile($file);
exit();