Как безопасно сжать php файл - PullRequest
0 голосов
/ 09 апреля 2011

Я нашел этот код для кеширования 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 ]

2 голосов
/ 09 апреля 2011

Вы не можете использовать SQL-инъекцию на этой странице, вы не общаетесь с базой данных.

Однако вам вообще не нужно проверять переменную $ _SERVER.

Просто поместите ob_start('ob_gzhandler'); вверху страницы, и все будет в порядке.

Возможно, лучше обрабатывать gzip на другом слое (вы можете включить сжатие zlib в php.ini илиобработайте это самим вашим веб-сервером), но если вы хотите сделать это в php, вам не нужно делать почти столько работы.

0 голосов
/ 09 апреля 2011

Грустно сказать, но весь вопрос не имеет смысла.

  1. Этот код не сжимает php-файл, но выводится только.
  2. Нет смысла сжимать вывод, по крайней мере, так.
  3. Использование $ _SERVER не является дырой в безопасности.

Итак, я бы посоветовал вам просто избавиться от этого кода, все это не нужно.

0 голосов
/ 09 апреля 2011

Код, который вы предоставили, не содержит SQL-операторов, поэтому вам не нужно беспокоиться о SQL-инъекции, по крайней мере, в этой части кода.Если вы реализуете SQL-операторы где-то еще, вы, конечно, должны принять необходимые меры предосторожности.

Использование $ _SERVER также не должно быть проблемой, если PHP-реализация "substr_count" не уязвима.Если отправленный клиентом заголовок HTTP_ACCEPT_ENCODING содержит «gzip», вы будете выполнять сжатие, в противном случае - нет.Пока вы не используете значение из $ _SERVER ['HTTP_ACCEPT_ENCODING'] любым другим способом, это похоже на сохранение.

И как уже сказал шизодактиль, есть более эффективные способы обработки сжатия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...