2011-04-09 2 views
-1

이 코드는 PHP 파일 캐시를 만들고 압축하는 것으로 밝혀졌습니다. 아래는 제 코드입니다.PHP 파일을 안전하게 압축하는 방법

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

나는 내가 아는 한이 사이트에 대한 보안 구멍이 될 것이라고 $ _SERVER을 사용할 때 잘 작동

<?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; 
}?> 

하지만를 보이는뿐만 아니라 다른 코드를 발견했습니다. 당신은 가능성이 페이지에 SQL 주입을 가질 수 없습니다

+0

SQL 삽입을 피하려면. 나는 당신이 PDO와 바인딩 변수를 사용하기 시작했다면 (정규 위생 처리와 함께) 아직 시작하지 않았 으면합니다. – PiZzL3

답변

2

사람이 내가 안전하게 위의 코드를 쓸 수있는 방법을 말해 줄 수, 내가 SQL 주입을

감사를 할 수 없을 의미, 당신은 이야기하지 않습니다 데이터베이스.

그러나 $ _SERVER 변수를 전혀 확인할 필요가 없습니다.

페이지 상단에 ob_start('ob_gzhandler');을 입력하면 문제가 없습니다.

다른 레이어에서 gzip을 처리하는 것이 더 낫습니다 (phl.ini에서 zlib 압축을 사용 가능하게하거나 웹 서버 자체에서 처리하도록 할 수는 있지만). PHP에서 수행하려는 경우 거의 그토록 많은 일을해야합니다.

+0

그가 $ _SERVER 변수를 확인하지 않으면 브라우저가 "gzip"을 지원하는지 어떻게 알 수 있습니까? 클라이언트가 "gzip"을 지원하지 않으면 어떻게 될까요? – Demento

+1

@Demento : ['ob_gzhandler'] (http://php.net/ob_gzhandler)가 모든 협상을합니다. – Gumbo

+0

@Gumbo : 감사합니다. 그 경우에는 물론 검사를 건너 뛸 수 있습니다. – Demento

0

제공 한 코드에는 SQL 문이 포함되어 있지 않으므로이 코드 부분에서 SQL 주입에 대해 걱정할 필요가 없습니다. 다른 곳에서 SQL 문을 구현하는 경우에는 물론 필요한 예방 조치를 취해야합니다.

"substr_count"의 PHP 구현이 취약하지 않은 한 $ _SERVER를 사용하면 문제가되지 않습니다. 클라이언트가 보낸 HTTP_ACCEPT_ENCODING-Header에 "gzip"이 포함되어 있으면 압축을 수행하고 그렇지 않으면 압축을 수행합니다. 다른 방법으로 $ _SERVER [ 'HTTP_ACCEPT_ENCODING']의 값을 사용하지 않는 한, 이것은 절약 된 것 같습니다.

이미 schizodactyl이 말했듯이 압축을 처리하는 더 좋은 방법이 있습니다.

0

슬픈 일이지만, 전체적인 질문은 말이되지 않습니다.

  1. 이 코드는 PHP 파일을 압축하는 것이 아니라 출력 만합니다.
  2. 출력을 압축하는 데는별로 의미가 없습니다.
  3. $ _SERVER를 (를) 사용하는 것은 보안상의 허점이 아닙니다.

그래서이 코드를 제거하는 것이 좋습니다. 모두 불필요합니다.

관련 문제