正确的方法将zip文件响应到请求

时间:2017-04-12 16:18:09

标签: php curl joomla3.0

使用curl / fopen请求从网站到我的网站的zip文件。当请求到来时,我的站点中的特定php方法代码获取请求URL中的所有查询字符串变量值,然后进行各种检查以验证请求的有效性(有一些我不想要的检查出于安全原因写,然后下面的代码最后回复zip文件 -

    header("Expires: 0");   
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="file name here"'); 
    header('Content-Length: '.filesize("/home/ttcc/content.zip"));
    header("Cache-Control: maxage=1");
    header("Pragma: public");
    header("Content-Transfer-Encoding: binary");
    ob_clean();
    flush();              
    if (!readfile("/home/ttcc/content.zip")) echo "some messages";
    exit();

该代码有效,但这是响应zip文件的正确方法吗?它有任何缺陷或安全漏洞吗?

1 个答案:

答案 0 :(得分:0)

如果在将文件作为响应发送之前不需要任何其他计算,则最好使用 Web服务器来实现此目的。 Nginx将是提供静态文件的不错选择。

因此请求不应传递给PHP,并由Web服务器本身处理,如图像和其他静态文件。

如果您需要针对同一请求检查访问权限或使用不同文件的响应,则可以使用您的代码并在其之前进行所有计算。通过PHP实现它是非常简单方便的解决方案。