我找到了这个代码来制作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注入
由于
答案 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)
不幸的是,但整个问题是没有意义的。
所以,我建议你摆脱这个代码,这都是不必要的。