php 업데이트 때문에 에러나는게 있는데 하나만 봐주시겠어요.

php 업데이트 때문에 에러나는게 있는데 하나만 봐주시겠어요.

QA

php 업데이트 때문에 에러나는게 있는데 하나만 봐주시겠어요.

본문

안녕하세요.

제가 사용하는 호스팅이 지들 마음대로 php 상위버전으로 업데이트를 한건지,

설정을 변경한건지...

아무 문제없던 홈페이지가 php 에러코드를 뽑아내고,

제대로 작동하던 기능이 작동 안하고 있는 상황입니다.

 

계정안에 홈페이지가 십여개 들어 있는데 이것들이 일거리를 만드네요.

유료호스팅은 아무런 통보도 없이 이런식으로 운영하다니... 

일단 무슨 일인지 문의는 해뒀는데, 밤이라 그런지 답이 없네요.

 

간단한건 제가 수정하고 있는 중인데,

한가지는 어디를 수정해야 할지 몰라서 문의 드립니다.

 

기존에 

제 홈페이지 기능중 하나는 스크립트를 불러오지 않고,

 

스크립트 내용을 아래 처럼 감싼 후 php로 불러오게 한 것이 있습니다.

미약하게나마 소스를 안보여줄려고요.

 

<?php if(!preg_match("/".$_SERVER['HTTP_HOST']."/i",$_SERVER['HTTP_REFERER'])) exit;?>
스크립트 내용

//-->

 

정상적으로 잘 작동하고 있었는데,

이번에 문제 생기면서 전혀 작동 안하고 있습니다.

 

지금 호스팅에서도 스크립트 감싼거 빼버리고,

php가 아닌 스크립트로 불러오면 정상 작동은 하고 있는거 보니

아마도 

<?php if(!preg_match("/".$_SERVER['HTTP_HOST']."/i",$_SERVER['HTTP_REFERER'])) exit;?>

이 부분만 수정해 주면 될거 같은데 어느 부분을 수정해야 할지 모르겠네요.

 

혹시 아시는분 계시면 답변 부탁드립니다. 

감사합니다.

이 질문에 댓글 쓰기 :

답변 3

echo $_SERVER['HTTP_HOST'];

echo '<br>';

echo $_SERVER['HTTP_REFERER']; 

 

이렇게 해보시면 각각 어떤 데이타가 뿌려지시는 보여지실거에요 .

서술 하신 내용으로 봐서는 다른 사이트로 유입하여 접속하면 멈추라는 코드로 되어있는거 같은데 

원하시는 효과가 어떤것인지 캐치를 못하겠습니다.

마지막에 exit; 대신에 ''; 이렇게 바꾸셔도  아무런 문제없다면 php 버전 하고 별개의 문제 같습니다.

문제 접근 포인트를 다시 잡으시는게 맞지않나 싶습니다. 

그누보드5를 이용해 만든 홈페이지가 있습니다.
그중 초기화면과 게시판 1개에 예약관련해서 요금계산되게 하는 프로그램을 넣은게 있고 js로 되어 있습니다.(이부분은 외주로 프로그래머에 의뢰해서 만든겁니다.)

그런데, js는 그대로 소스가 노출되기에 프로그래머에게 소스 못가져가게 하는 방법이 없는지 물어봤더니, 어찌보면 눈가림이지만 그래도 간단한 방법이 있다고 하면서,

기존에 짠 스크립트 위에
<?php if(!preg_match("/".$_SERVER['HTTP_HOST']."/i",$_SERVER['HTTP_REFERER'])) exit;?>
를 넣고 .js를 .php로 바꾸었습니다.
이렇게 해도 계산식 정상적으로 작동되고,
php 소스를 보면 아무것도 없는 텅빈화면이 나오게 되더라고요.(크롬 개발자 도구에서는 다 보이지만요.)

하여간 그래도 이걸 만족하며 잘 사용하고 있었는데,
어제 밤 호스팅사에서 무슨짓을 했는지 다른곳은 php에러 잔뜩 뿌려지고,(이건 간단한거니 제가 다 수정)
저 부분이 작동이 전혀 안되고 있었습니다.(날짜 클릭하면 달력이 나와야 하고 날짜와 시간에 따라 요금이 자동으로 계산 되어야 하는데 아예 먹통인 상황)

그래서 혹시나 하고 .php를 다시 .js로 바꾸고
<?php if(!preg_match("/".$_SERVER['HTTP_HOST']."/i",$_SERVER['HTTP_REFERER'])) exit;?>
를 삭제하고 돌려봤더니 제대로 작동되기에,

<?php if(!preg_match("/".$_SERVER['HTTP_HOST']."/i",$_SERVER['HTTP_REFERER'])) exit;?>
이 문제인듯해서 문의드려봤던겁니다.

phpinfo(); 이걸로 먼저 버전부터 확인해보시구요

if(!preg_match("/".$_SERVER['HTTP_HOST']."/i",$_SERVER['HTTP_REFERER'])) exit;

이 조건문이 어딧건지 모르겠어요 일단 주석처리 해보세요

 

답변 감사합니다.
php 버전은 7.2.33입니다.
이전에도 이 버전이었던걸로 기억하는데,
갑자기 이전에 없던 php에러가 나고 작동하던게 작동을 안하네요. (계산식)
저 조건문은 그누보드에 있는건 아니고
그누보드로 만든 홈페이지에 특정 프로그램을 구현하기 위해서 스크립트를 추가한게 있습니다.
위에도 설명드렸듯이 미약하게나마 소스를 안보이게 하려고 저 조건문을 추가하고 파일 확장자를 script에서 php로 바꾼후 불러오던 거였는데,
지금 작동을 안하는 상태입니다.
역시 위에도 적었듯이 저 조건문 빼고 php로 바꾼 확장자를 다시 script로 바꿔서 불러오면 정상 작동합니다.
크롬 개발자도구에서 보면 어차피 소스 다 보이지만 그래도 저렇게라도해서 조금이라도 소스를 감추고 있었습니다.

음.... 무슨말인지... 하나도 모르겠네요 밑에 답변을 제가 이해를 하자면 php로 짰는데 .js로 바뀌어서 넣은건가요?

if(!preg_match("/".$_SERVER['HTTP_HOST']."/i",$_SERVER['HTTP_REFERER'])) exit;
이게 어떤것을 의미하는지 좀 아시고 쓰셨으면 좋겠어요..

제가 내용을 헷갈리게 썼나보내요.

그누보드5를 이용해 만든 홈페이지가 있습니다.
그중 초기화면과 게시판 1개에 예약관련해서 요금계산되게 하는 프로그램을 넣은게 있고 js로 되어 있습니다.(이부분은 외주로 프로그래머에 의뢰해서 만든겁니다.)

그런데, js는 그대로 소스가 노출되기에 프로그래머에게 소스 못가져가게 하는 방법이 없는지 물어봤더니, 어찌보면 눈가림이지만 그래도 간단한 방법이 있다고 하면서,

기존에 짠 스크립트 위에
<?php if(!preg_match("/".$_SERVER['HTTP_HOST']."/i",$_SERVER['HTTP_REFERER'])) exit;?>
를 넣고 .js를 .php로 바꾸었습니다.
이렇게 해도 계산식 정상적으로 작동되고,
php 소스를 보면 아무것도 없는 텅빈화면이 나오게 되더라고요.(크롬 개발자 도구에서는 다 보이지만요.)

하여간 그래도 이걸 만족하며 잘 사용하고 있었는데,
어제 밤 호스팅사에서 무슨짓을 했는지 다른곳은 php에러 잔뜩 뿌려지고,(이건 간단한거니 제가 다 수정)
저 부분이 작동이 전혀 안되고 있었습니다.(날짜 클릭하면 달력이 나와야 하고 날짜와 시간에 따라 요금이 자동으로 계산 되어야 하는데 아예 먹통인 상황)

그래서 혹시나 하고 .php를 다시 .js로 바꾸고
<?php if(!preg_match("/".$_SERVER['HTTP_HOST']."/i",$_SERVER['HTTP_REFERER'])) exit;?>
를 삭제하고 돌려봤더니 제대로 작동되기에,

<?php if(!preg_match("/".$_SERVER['HTTP_HOST']."/i",$_SERVER['HTTP_REFERER'])) exit;?>
이 문제인듯해서 문의드려봤던겁니다.

음.. 일단 스크립트는 누구나 보게되죠... 모듈 번들링 (소스 코드를 난독화처리하는 기술이 포함되어 있습니다.) 을 하지 않는 이상은 php와 js를 통으로 넣어서 쓰게되면 유출될수밖에 없어요 그래서 요즘에는 백단하고 프론트엔드를 나눠서 하는게 그 이유도 있거든요 보안을 생각하게되면 레거시를 걷어내고 트랜드에 맞춰서 개발 할수 밖에 없습니다..

PHP 7.4.15에서 Notice 뜨네요 

PHP Notice:  Undefined index: HTTP_REFERER 

 

일단 

<?php if(isset($_SERVER['HTTP_HOST']) && isset($_SERVER['HTTP_REFERER']) && !preg_match("/".$_SERVER['HTTP_HOST']."/i",$_SERVER['HTTP_REFERER'])) exit;?>

이렇게 변경해보시고 host referer 둘다 없을 때는 !true 니까 조절해주시고요

 

호스팅사에서 php error_reporting을 E_ALL 로 설정해놓은듯 싶군요

요새 이런 질문이 많이 보이던데 

어느 호스팅사인지 궁금해요

친절하신 답변 감사합니다.
호스팅사 답변이 왔는데, 지들 맘대로 세팅 변경을 했다고 하더군요.
문제는 다시 원상태로 돌려놨는데, 저 부분만 제대로 다시 작동하고,
나머지는 더 많은 에러코드를 뽑아내고 있습니다.
이 호스팅사 잘 쓰다가 간혹 저러니 미치겠네요.

오늘 오전에 다시 에러난다고 호스팅사에 문의했고,
지금보니 다시 정상 작동하네요.
아무리 사용자를 위해서 업데이트를 했다지만, 왜 지들 임의로 저래서 사람 미치게 하는지 모르겠네요.

답변을 작성하시기 전에 로그인 해주세요.
전체 112
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT