如何安全地压缩php文件


How to compress php file securely

我发现这个代码使php文件缓存和压缩。下面是我的代码。

<?php if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) ob_start("ob_gzhandler"); else ob_start(); ?>

我发现了另一个代码,似乎工作得很好

<?php
if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip'))
if(extension_loaded('zlib')){
    ob_start('ob_gzhandler');
}
header ('content-type: text/html; charset: UTF-8');
header ('cache-control: must-revalidate');
$offset = 60 * 60 * 24;
$expire = 'expires: ' . gmdate ('D, d M Y H:i:s', time() + $offset) . ' GMT';
header ($expire);
ob_start('compress');
function compress($buffer) {
    $buffer = preg_replace('!/'*[^*]*'*+([^/][^*]*'*+)*/!', '', $buffer);
    return $buffer;
}?>

但是,当使用$_SERVER时,据我所知,这将是站点的安全漏洞。谁能告诉我如何安全地编写上述代码,我的意思是不能做sql注入

谢谢

你不可能在这个页面上有任何SQL注入,你不是在与数据库对话。

但是,您根本不需要检查$_SERVER变量。

只要把ob_start('ob_gzhandler');放在你的页面顶部,你就没事了。

最好在不同的层处理gzip(你可以在php.ini中启用zlib压缩,或者让你的web服务器自己处理),但如果你想在php中做这件事,你不必做那么多的工作。

您提供的代码不包含sql语句,因此您不必担心sql注入,至少在这部分代码中是这样。如果在其他地方实现sql语句,当然必须采取必要的预防措施。

使用$_SERVER应该也不是问题,只要php实现的"substr_count"不容易受到攻击。如果客户端发送的HTTP_ACCEPT_ENCODING-Header包含"gzip",则执行压缩,否则不执行压缩。只要您不以任何其他方式使用$_SERVER['HTTP_ACCEPT_ENCODING']中的值,这似乎是保存。

正如schizodactyl已经说过的,有更好的方法来处理压缩

很遗憾,整个问题都没有意义。

    这段代码不是在压缩php文件,而是在输出。
  1. 压缩输出没有多大意义,至少这样。
  2. 使用$_SERVER不是安全漏洞。

所以,我建议你删掉这些代码,它们都是不必要的。