반응형
웹호스팅을 이용할 경우 php.ini 수정이 어려운 경우가 있습니다.
특히 외부의 파일을 가져올 경우 allow_url_fopen = 0; 일 경우 1로 수정 해줘야 하지만, 보안상 막아둔 경우 서버를 공용으로 사용하므로 수정을 해주지 않습니다.
저의 경우 cafe24 호스팅을 주로 이용하는데 이곳 역시 allow_url_fopen = 0 으로 되어 있어서 fopen(), file(), file_get_contents() 함수로 외부 URL 을 읽어 들이기가 안됩니다.
Warning: file_get_contents() URL file-access is disabled in the server configuration in
하지만, 오류를 해결하는 방법으로 외부 파일을 읽어 들이는 함수 이용전에 다음과 같이 ini 설정을 임시로 변경해서 사용하면 됩니다.
@ini_set("allow_url_fopen","1");
ini_set() 를 사용해서 해당 페이지에서 일시적으로 allow_url_fopen을 1로 적용해서 이용할 수 있습니다.
하지만, allow_url_fopen 이용시 보안상 취약합니다.
아래 cafe24 호스팅 업체로 부터 답변 받은 내용 입니다.
최근 발생하고 있는 홈페이지 변조나, 피싱 사이트로의 악용은 대부분 게시판의 취약점이나, php 의 취약점에 의해 발생되고 있습니다. 이중에 가장 빈번한 것이 php 의 외부 사이트 소스 실행 기능 (allow_url_fopen)으로 악의적인 프로그램이 실행되어져서 발생이 되고 있습니다.
이러한 문제로 인하여 한국정보보호진흥원에서는 allow_url_fopen 을 허용하지 않기를 권고 하고 있습니다.
allow_url_fopen 을 허용하게 되면 보안적으로 심각한 문제를 초래 할 수 있습니다.
해당 기능을 켜두게 되면, 원격에서 프로그램을 웹사이트에 삽입하여 실행(PHP injection), 대량으로 웹사이트를 변조 할 수 있게 되므로 어느날 갑자기, 홈페이지 화일이 통채로 지워지거나, 데이터베이스 내용이 모두 사라질수도 있습니다.
관련 내용 URL :
저희 카페24에서는 기본적으로 해당 기능이 모두 off 로 설정이 되어 있으며, 따라서 고객님께서는 가급적 allow_url_fopen 기능이외에 다른 방법으로 구현을 하시거나, 아래의 예시와 같은 function 을 만들어서 사용하시는 것을 권고합니다. (HttpRequest, http_get, fsockopen 등의 함수로 구현이 가능합니다.)
(allow_url_fopen 기능이란 php 에서 include 를 사용할때 URL 방식으로 파일을 include 할수 있도록 해주는 기능입니다.)
(해당 내용이 이해가 되지 않거나, 보안의 위험성을 감수하더라도 반드시 allow_url_fopen 을 사용하셔야 한다면, 고객센터로 연락을 주시면 친절히 상담해 드립니다.)
-----------------------------------------------------------------------------------------
function get_url_fsockopen( $url ) {
$URL_parsed = parse_url($url);
$URL_parsed = parse_url($url);
$host = $URL_parsed["host"];
$port = $URL_parsed["port"];
if ($port==0)
$port = 80;
$port = $URL_parsed["port"];
if ($port==0)
$port = 80;
$path = $URL_parsed["path"];
if ($URL_parsed["query"] != "")
$path .= "?".$URL_parsed["query"];
if ($URL_parsed["query"] != "")
$path .= "?".$URL_parsed["query"];
$out = "GET $path HTTP/1.0\\r\\nHost: $host\\r\\n\\r\\n";
$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 == "\\r\\n" )
$body = true;
}
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 == "\\r\\n" )
$body = true;
}
fclose($fp);
echo $in;
}
}
echo $in;
}
}
-----------------------------------------------------------------------------------------
위 함수로도 동작 잘 되는군요.
반응형
'웹프로그램' 카테고리의 다른 글
[부산] 서버 연동 앱개발을 위한 관리페이지 제작 및 JSON 출력 만들기 무료 교육 - 재직자대상 (0) | 2015.05.06 |
---|---|
JQueryMobile 에서 backround image 적용하기 (0) | 2014.12.04 |
javascript에서 미리 이미지 로드하기 (1) | 2014.05.23 |
[그누보드] 회원가입시 자동등록방지 코드가 맞지 않습니다. 캡챠(kcaptcha) 에러 해결 방법 (0) | 2014.01.24 |
자바스크립트 이용해서 다음 카페 대문에 iframe 삽입하기 (0) | 2010.12.29 |
Warning: Cannot modify header information - headers already sent by 오류 해결 방법 (0) | 2010.12.27 |
자바스크립트를 이용해서 여러장의 이미지 롤링하기 (0) | 2010.12.24 |
자바스크립트를 이용해서 링크 클릭시 테이블 보이기 숨기기 style display 활용 (0) | 2010.12.22 |