2011-10-10 3 views
2

질문이 있습니다.포함 된 파일에 대한 액세스 비활성화

포함 된 파일에 대한 직접 액세스를 비활성화하고 싶습니다. (예를 들어 header.tpl.php, footer.tpl.php, confic.inc.php, DB-connect.inc.php 요법.)

을하지만, 첫 번째 날 내가 모두 원하는 수 을하고 싶어하는지 설명하자 내 포함 된 파일 (index.php)에 대한 액세스 및 직접 액세스를 위해 404 헤더가있는 파일을 비활성화합니다.

은 지금은 멋진 PHP는 조각을 발견하고 (404 헤더와 404 포함) 내의 index.php에서

이 코드 수정 : 내 templatefiles에서

define('MY_APP',true); 

이 코드는 다음과 같습니다

if(!defined('MY_APP')) { 
header('HTTP/1.1 404 Not Found'); 
include('./../error/404.php'); 
die; } 

이 코드의 보안 또는 기타 문제가 있습니까?

안부 bernte

답변

5

이 코드와 보안 또는 다른 문제를 볼 수 있습니까?

.php가 더 이상 실행되지 않도록 서버를 다시 구성한 경우 해당 소스 코드를 볼 수 있습니다.

그러나 그 다음으로 접근 방법은이를 수행하는 아주 일반적인 방법입니다. 그러나 error/404.php에는 header('HTTP/1.1 404 Not Found'); 행이 포함될 수 있으므로 각 파일에 대해 반복 할 필요가 없습니다. die; 문과 동일합니다. 각 라이브러리/템플릿 등 파일에서

:

require('../error/include_file.php'); 

include_file.php에서 :

if(!defined('MY_APP')) 
{ 
    header('HTTP/1.1 404 Not Found'); 
    include('404.php'); 
    die; 
} 

디자인을위한 어쩌면 더 나은입니다. 그렇게 많이 반복하지 마십시오.

+0

팁 주셔서 감사합니다. @ 반복하지 마십시오. – bernte

1

public_html 폴더 위 또는 기본 html 폴더로 사용하는 모든 것을 ../../에 포함시켜야하는 이유는 무엇입니까? 그런 다음 스크립트에서 사용할 수 있지만 대중은 기본 404/파일을 찾을 수 없습니다. 나는 패스워드를 가지고있는 설정 파일을 가지고 이런 일을해서 아무도 그들에게 접근 할 수 없다.

1
if (basename($_SERVER['SCRIPT_FILENAME']) == basename(__FILE__)) 
{ 
    //header("Location: index.php"); 
    exit("NOT ALLOWED"); 
} 
관련 문제