2012-03-12 5 views
0

사용자를 위해 html 페이지가 생성되는 웹 응용 프로그램을 개발 중입니다. 이 페이지에는 사용자가 넣은 내용이 모두 포함될 수 있습니다. 우리는이 페이지들을 취하여 실제 HTML을 출력하기 전에 상단에 약간의 PHP를 추가하여 몇 가지 사항을 확인합니다. 그것은 다음과 같은 종류의 보일 것이다PHP 구문 분석을 중지하지만 나머지 파일을 출력합니다.

<?php 
    require 'checksomestuff.php'; 

    // User's html below 
?> 

<html> 
    <!-- user's html --> 
</html> 

require 후 아무것도 구문 분석 PHP를 중지하는 방법이 있나요? html이 출력되어야하지만, 사용자가 html로 원하는 것을 추가 할 수 있기 때문에, 사용자 추가 PHP가 실행되는 것을 원하지 않습니다. 분명히 그것이 보안 문제 일 것입니다. 그래서, 나는 사용자의 html 출력을 원하지만 PHP는 파싱하지 않는다. 차라리 사용자의 HTML을 다른 파일에 넣지 않아도됩니다.

+1

사용자가 만든 PHP를 페이지에 포함시키지 않으려면 사용자가 페이지에서 처리 할 PHP 코드를 입력하는 것을 허용하지 마십시오. –

+0

사용자가 HTML을 어떻게 추가합니까? – bfavaretto

+0

당신은 보안 개념을 완전히 오해하고 있습니다. 사용자의 입력을 표시하거나 실행하지 말고 취약점을 확인해야합니다. – emaillenin

답변

1

합리적인 방법은 사용자가 만든 콘텐츠를 다른 파일로 옮겨 놓은 다음 PHP로 구문 분석하지 않고이 파일을 기본 PHP 파일에로드하고 그대로 출력해야합니다.

다른 여러 가지 방법이 있지만 다른 파일을 만드는 것이 당신을 위해 일한다면 아마도 가장 좋은 방법 일 것입니다.

업데이트 : 마지막으로 질문을 읽어야합니다.

base64 인코딩을 사용하여 html을 변수로 인코딩하면 디코딩 된 문자열을 인쇄 할 수 있습니다.

+0

"사용자의 HTML을 다른 파일에 넣지 않아도됩니다." 그러나 어쨌든 고마워. –

+0

@MattBradley 아, 죄송합니다. 그것을하는 다른 방법에 대한 답변을 추가했습니다. – zaf

0

파일 데이터를 nxtxt 또는 html 파일로 저장하지 않으면 php가 평가되지 않습니다.

또는 file_get_contents()를 통해 또는 php를 평가하지 않는 다른 방법으로 파일을 읽을 수 있습니다. 난 아직도 당신이 (특히이 방법을)하고 싶은 이유 을 물어 유혹하고있어 비록

+0

"사용자의 HTML을 다른 파일에 넣지 않아도됩니다." 그러나 어쨌든 고마워. –

0

, 그것은 ...

당신은 특별한 __halt_compiler() 기능입니다 도움이 될 수있는 유일한 것 중 하나처럼 나에게 소리

해당 으로 나머지 페이지를 실행하지 못하도록하고, 나머지는 출력할지 여부를 결정할 수 있습니다. 그렇지 않다면 수동으로 수행하는 방법에 대한 PHP 함수의 PHP 매뉴얼 (위에 링크 된)을 읽으십시오.

이 방법으로 볼 수있는 유일한 문제는 필요할 때마다이 작업을 수행하려는 모든 파일에 해당 코드가 있어야한다는 것입니다.

관련 문제