2011-10-14 2 views
-6

http://mysite.com/script.php으로 이동하면 브라우저에 PHP 소스 코드가 표시됩니다. 그것을 막을 수있는 방법이 있어야합니다!브라우저가 PHP 코드를 표시하지 못하게하려면 어떻게해야합니까?

UPD : 음. 질문이 정확하지 않습니다. 에러 _ 리포팅 (E_ALL)이 켜져있을 때 몇 가지 오류가 나타날 수 있습니다. Firefox에서 오류가 발생한 스크립트의 링크를 클릭 할 수 있습니다. 그럼 파이어 폭스 소스 코드를 보여주세요! 나는 그것을 원하지 않는다. 나는 필요 없어.

UPD2 : 공개 디렉토리 위의 중요한 데이터가있는 파일을 배치합니다. 고맙습니다, 아주 좋은 조언입니다. 나는 그것을 사용할 것이다.

+12

이 동작은 웹 서버가 올바르게 구성되지 않았 음을 의미합니다. – Gumbo

+0

호스트가 PHP를 확실히 지원합니까? –

+0

Apache 구성 파일 (httpd.conf) : <파일 ".php"> 모두 거부 필요 –

답변

1

이것은 서버가 * .php 파일 확장자를 가진 파일을 해석하도록 구성되지 않았 음을 의미합니다. 서버에 PHP가 제대로 설치 및 구성되어 있습니까?

PHP가 확실한 경우 httpd.conf을 확인하십시오. 아래에 비슷한 줄이 있어야합니다.

AddType application/x-httpd-php .php .phtml 
+0

이렇게하면 웹 서버가 .php 및 .phtml이있는 모든 파일을 PHP 스크립트로 처리하도록 지시합니다. 그래서 이것은 내 질문에 대답하지 않습니다. 그러나 기술을 숨기는 좋은 방법입니다 (예 : .asp 또는 .do는 PHP로 처리됩니다) –

1

이 또한 할 수있다 PHP는 활성화되어 있지만 <?php

+0

'

2

프레임 워크의 많은 경우에 노출되는 코드에서 민감한 정보를 방지하기 위해 보안 기술을 사용하는 대신 <? 같은 잘못된 태그를 사용하는 경우 PHP 인터프리터가 실패하고 원시 코드가 전 세계에 표시됩니다. 아파치의 문서 루트 밖에서 모든 코드를 유지해야한다. 문서 루트가 /var/www/mysite/public/에있는 경우

그래서 당신과 같이 거기의 index.php를 배치 할 수 있습니다 :

<?php 
// index.php 
require '../bootstrap.php'; 

이 파일은 문서 루트의 다른 파일 바깥을 필요로보다 더 아무것도하지 않습니다. 이 파일에는 db 자격 증명과 같은 중요한 정보가 들어 있습니다.

<?php 
// bootstrap.php 
$db_user = 'user'; 
$db_pass = '12345abcdef'; 
connect($user, $pass); 
... 
+0

'../'인자가 없다면 실패하지 않을 것입니다. –

+0

필자가 언급 한 비슷한 접근법을 사용합니다. 적절한 요청과 css, javscript 및 이미지 폴더를 라우팅하는 index.php를 제외하고 내 문서 루트에 코드가 전혀 없습니다. –

+2

'bootstrap, php'가 보통'public_html' 인'index.php'와 같은 디렉토리에 있다면 아무것도 열지 못하게 될 것입니다. –

관련 문제