2010-06-07 7 views
1

원격으로 PHP를 실행하기 위해 readfile()을 사용하는 것과 관련하여 최근 질문을했지만 어쩌면 제가 문제를 해결하는 것이 더 좋을지 생각해 볼 수 있습니다. 일에 대한 잘못된 방법은, 그래서 여기 간다 :PHP 파일을 표시하지 않고 PHP 웹 사이트를 클라이언트 서버에 배포

  • I 양식, 데이터베이스 연결을 많이 포함하고 여러 가지의
  • I를 추적 할 수 $ _SESSION 변수를 사용합니다, 사용자가 로그인을 필요로하는 PHP 웹 사이트를 내 웹 사이트의 기능을 사용하고자하는 잠재적 인 고객이 있지만, 자신의 서버에서 제어합니다. 그들은 아마도 자신의 서버에 로컬 콘텐츠 및 CSS 파일을 사용하여 웹 사이트를 다시 스타일링하고 싶지만 나중에 문제가 될 수 있습니다.
  • 제공 할 가치가 있기 때문에 제 PHP 코드를 표시하고 싶지 않습니다. .

나는 클라이언트의 서버에서 광산에 이르기까지 include() 호출과 관련하여 생각했는데, 적어도 가변 범위를 그대로 유지하지만 많은 사이트 (PHP 문서)는 readfile(), file_get_contents() 또는 유사한. 이상적으로는 내 서버에있는 "실제"각각에 대해 클라이언트의 서버에 간단한 래퍼 파일을 갖고 싶습니다.

내가 원하는 것을 어떻게 달성 할 수 있을지에 대한 제안이 있으십니까?

덕분에, ColmF

+3

서버가 파일을 '포함'할 수 있으면 파일을 복사 할 수 있습니다. –

+9

PHP는 해석 언어이므로 파일을 '읽음'하고 파싱합니다. 예, 어떤 경우에는 캐시 된 바이트 코드를 저장할 수 있지만 컴파일하고 바이트 코드에서 작동하는 상위 레벨 언어와 다릅니다. 원하는 작업을 수행 할 수있는 http://www.zend.com/en/products/guard/를 확인하십시오. 서명하지 않으면 코드/기타 등을 재사용하지 않는 조항이 포함 된 회사와 계약을 체결합니다.이 경우 최상의 보호입니다. 당신은 또한 '오픈 소스'라이센스하에 어떤 것이라도 사용한다면 당신의 전체 앱이 오픈 소스로 간주 될 수 있으므로이 모든 것이 논쟁의 여지가있다. –

+2

@Matt : 답변으로 의견을 게시하지 않는 이유는 무엇입니까? 나는 그것이 맞을 것을 제안한다. – abatishchev

답변

1

나는 당신이 당신의 서버에 curl 유형의 요청을 수행 재미 래퍼의 어떤 종류를 원하지 않는다면이와 힘든 시간을해야 할 것 같아요. 특히 세션 및 쿠키와 같은 것을 처리 할 때 그렇습니다.

PHP obfuscator으로는 무엇을하고 있습니까?

4

서버에 완전히 포함되기를 원하는 경우 가장 적합한 방법은 기술적 해결 방법이 아닙니다.

당신은 소프트웨어를 그들에게 사용권을주고 당신은 지적 재산권이 당신에게 속해 있으며 사전 허가 없이는 복사/배포 할 수 없다고 명시해야합니다. (분명히 당신은 그보다 더 나은 법적인 번역본을 필요로 할 것입니다. 생각).

0

직접 호스팅하는 대신 대부분의 PHP 응용 프로그램에서 자동 업데이트 기능을 사용하여 프로그램을 클라이언트에 배포하면 어떻습니까? 자신을 호스팅하는 것은 웹 사이트 관리에서 호스팅 비용 지불까지 복잡한 일입니다.

배포하지 않으려면이를 수행 할 수있는 사전 작성된 라이센스를 찾으십시오. 그 중 하나를 찾을 수 없다면 변호사와 상담 할 시간입니다.

1

기본적으로 응용 프로그램을 원격 서버 (즉, 클라이언트)에 프록시하는 방법을 찾고 있습니다. 클라이언트 사이트에서 readfile()과 같은 것을 사용하는 것은 좋지만, 결국에는 여러 개의 스크립트가 필요할 것입니다. 기본적으로 readfile은 특정 파일 경로 나 URL에서 사용할 수있는 것을 긁어 최종 사용자에게 전달합니다. 따라서 readfile('google.com')을 수행하면 Google 홈페이지의 소스 코드가 출력됩니다.

고객의 사이트에 더미 양식을 갖고 싶다고 가정하면 끝날 때 일부 코드를 사용해야 할 것입니다. 코드는 양식 제출을 가로 챌 필요가 있습니다 (따라서 제출하려는 페이지에 URL 매개 변수가 readfile으로 있어야 양식 제출 URL이 귀하의 클라이언트 사이트가 아니라 사용자의 사이트임을 코드에 알릴 수 있습니다). 페이지 (양식 제출 처리자 페이지)는 자신의 사이트로 다시 전화를 걸어야합니다. 생각이 같은 :

readfile("https://your.site/whatever?{$_SERVER['QUERY_STRING']}"); 

귀하의 사이트가 다음 응답을 처리 한 후 다시 고객의 사이트에 모든 것을 전달하는 것입니다.

잘만되면 나는 올바른 길로 가보겠습니다. 내가 불분명한지 알려줘. 나는 이것이 많은 정보라는 것을 깨닫는다.

6

, 답변 &으로 게시 코멘트

PHP는 해석 언어이며 파일 및 파싱 등은 '읽기'로 터치를 수정 그들. 예, 어떤 경우에는 캐시 된 바이트 코드를 저장할 수 있지만 컴파일하고 바이트 코드에서 작동하는 상위 레벨 언어와 다릅니다. 즉, PHP '컴파일러'는 실제 소스 코드가 작동해야합니다. zend.com/en/products/guard에서 클라이언트가 Zend Server를 사용해야 함을 의미한다고 생각하지만 원하는 것을 수행 할 수 있습니다.

코드/기타 등을 재사용하지 않는 조항이 포함 된 계약서에 서명하지 못했습니다.이 경우 최상의 보호입니다. 당신은 또한 '오픈 소스'라이센스하에 어떤 것이라도 사용한다면 당신의 전체 앱이 오픈 소스로 간주 될 수 있으므로이 모든 것이 논쟁의 여지가있다.

이것은 많은 회사에서 비표준적인 관행은 아닙니다. 나는 특히 자랑스러워하는 소프트웨어를 제작했고 회사는 그것을 사용하기를 원합니다. 그들은 '개인적'이유로 또는 PCI와 같은 표준을 준수해야하기 때문에 자신의 정보 보안을 믿기 때문에 자신의 환경에서 응용 프로그램을 실행해야 할 때가 있습니다. 내 제품에 내 웹 서버에 데이터를 쿼리하고 응답을받는 '웹 서비스'로 제품을 제공했습니다. 이 경우 내 소스는 다른 폐쇄 API와 다르지 않으므로 완전히 보호됩니다. 모든 경우에 나는 사본을 수정하거나 배포 할 수 없도록 클라이언트에게 사본을 라이센스했습니다. 이것은 법적 구속력이있는 계약이며 고객의 측면에서 완전히 기대됩니다. 물론 내가 지원 등을 제공 할 것이라는 조항이 있었지만 그것은 여기 또는 거기에 없다.

짧은 답변 :

  • 법적 계약, 뷰의 모든 사람의 관점에서 가능성이 가장 좋은
  • 젠드 가드 제품처럼, 그래서 그것을
  • 개인 API에 대한 신뢰도를 보장 할 수 없습니다 그것을 사용한 적이 있지만, 클라이언트가 호스트해야 할 때 실제로 작동하지 않습니다.

행운을 비네!

0

코드를 볼 수 없도록 할 수 없습니다. 코드를 이해하는 것이 매우 어렵게 만들 수 있습니다. 좋은 차선책입니다. SD PHP Obfuscator을 참조하십시오.

관련 문제