如何安全地压缩php文件

时间:2011-04-09 01:49:54

标签: php security compression

我找到了这个代码来制作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注入

由于

3 个答案:

答案 0 :(得分:2)

您不可能在此页面上进行任何SQL注入,而不是与数据库通信。

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

只需将ob_start('ob_gzhandler');放在页面顶部,您就可以了。

在不同的层处理gzip可能更好(你可以在php.ini中启用zlib压缩,或者让它由你的web服务器本身处理),但如果你想在php中执行它你没有做了差不多的工作。

答案 1 :(得分:0)

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

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

正如schizodactyl所说,有更好的方法来处理压缩。

答案 2 :(得分:0)

不幸的是,但整个问题是没有意义的。

  1. 此代码不压缩php文件,但仅输出。
  2. 压缩输出没有多大意义,至少这种方式。
  3. 使用$ _SERVER不是安全漏洞。
  4. 所以,我建议你摆脱这个代码,这都是不必要的。