php의 allow_url_fopen 설정을 변경할 수 있나요?
💡 요약 정리
- 카페24 웹호스팅은 기본적으로 allow_url_fopen 기능이 OFF입니다.
- 보안 권고(한국정보보호진흥원)에 따라 허용하지 않는 것을 권장합니다.
- 허용 시 원격 코드 실행, 사이트 변조, 파일/DB 삭제 등 심각한 피해가 발생할 수 있습니다.
- 대체 방법(예: HttpRequest, http_get, fsockopen) 사용을 권 장하며 예시 코드를 제공합니다.
- 보안 위험을 감수하고서라도 꼭 필요하다면 1:1 문의로 요청해 주세요.
1. 기본 정책과 보안 권고
- 최근 발생하는 홈페이지 변조나 피싱 피해는 게시판 또는 PHP 취약점을 악용하는 경우가 많습니다. 이 중 특히 자주 악용되는 기능이 PHP의 외부 소스 실행 기능인 allow_url_fopen입니다.
- 카페24는 이러한 위험을 예방하기 위해 기본적으로 해당 기능을 모두 OFF로 운영합니다.
- 한국정보보호진흥원에서도 allow_url_fopen을 허용하지 않기를 권고하고 있습니다.
- allow_url_fopen을 허용하면 보안적으로 심각한 문제가 발생할 수 있습니다.
(참고) allow_url_fopen은 PHP에서 include를 URL 방식으로 사용해 원격 파일을 불러올 수 있게 해주는 기능입니다.
2. 왜 위험한가요?
allow_url_fopen을 켜두면 다음과 같은 위험이 커집니다.
- 원격에서 악성 프로그램이 삽입·실행되는 PHP injection 위험
- 대량의 웹사이트 변조(Defacement) 시도 증가
- 어느 날 갑자기 홈페이지 파일이 대량 삭제되거나
- 데이터베이스(DB) 내용이 모두 사라지는 등 치명적 피해 발생 가능
3. 권장 대안 방법
allow_url_fopen 대신 다음과 같은 방법을 권장합니다.
- HttpRequest, http_get, fsockopen 등의 함수로 구현
- 아래 fsockopen 예시 함수를 참고해 주세요.
function get_url_fsockopen( $url ) {
$URL_parsed = parse_url($url);
$host = $URL_parsed["host"];
$port = $URL_parsed["port"];
if ($port==0)
$port = 80;
$path = $URL_parsed["path"];
if ($URL_parsed["query"] != "")
$path .= "?".$URL_parsed["query"];
$out = "GET $path HTTP/1.0rn";
$out .= "Host: $hostrn";
$out .= "Connection: Closernrn";
$fp = fsockopen($host, $port, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br>n";
} else {
fputs($fp, $out);
$body = false;
while (!feof($fp)) {
$s = fgets($fp, 128);
if ( $body )
$in .= $s;
if ( $s == "rn" )
$body = true;
}
fclose($fp);
echo $in;
}
}
4. 꼭 사용해야 하는 경우
보안 위험을 충분히 인지하고서도 반드시 allow_url_fopen을 사용해야 한다면, 고객센터로 문의해 주세요.
문제가 해결되지 않았나요?
보안 위험을 검토했음에도 allow_url_fopen 허용이 꼭 필요하다면, 정확한 확인을 위해 아래 정보를 포함하여 1:1 문의게시판으로 문의해 주세요.
- 카페24 아이디
- 적용할 도메인
- 필요 사유와 사용 시나리오(예: 어떤 스크립트가 어떤 원격 리소스를 호출하는지)
- 에러 메시지 또는 관련 화면 캡처