2010-03-04 6 views
0

CodeIgniter를 처음 사용하는 경우보기 파일에 대한 직접 액세스를 제한하는 것이 좋을지 궁금합니다. 분명히 그들은 변수에 의존하는 많은 PHP 코드와 컨트롤러에서 전달되지 않는 PHP 코드를 포함하게 될 것입니다. 그래서 PHP 코드는 직접 액세스 할 수 있다면 쉽게 오류가 발생할 수 있습니다.CodeIgniter에서보기 파일에 대한 직접 액세스를 제한 하시겠습니까?

보너스 질문 : 응용 프로그램 폴더에서 도우미, 라이브러리, 후크 등의 폴더가 비어있는 이유는 무엇입니까?

감사합니다.

답변

4

주된 이유 아무도 액세스를 제한 할 귀찮게하지 아래로 스크롤 할 수 있습니다 오류가 발생하거나 쓸모없는 페이지가 표시 될 수 있기 때문에보기 파일로 이동해야합니다.

사람들이 폴더 구조와 파일 이름을 찾기 위해 노력하고 싶다면 절대적으로 아무 것도받지 못할 것입니다. 보기를 불안하게 만들려면 정말 미친 코드를 작성해야합니다.

정말로 보안을 설정하려면 계속 진행하십시오.

보기의 상단에

입력 :

<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); ?> 
<h1>Whatever</h1> 
+0

감사합니다. 시스템 및 응용 프로그램 파일 내부에서 사용되는 기본값이기도합니다. –

+0

실제로. 이는 정확히 동일한 접근 방식으로, CI 인스턴스에서 실행되는 모든 PHP 파일에서 작동합니다. CI에 포함되지 않은 경우 실행되지 않습니다. –

+0

우리가 CI에 대해 말하지 않는다면 어떻게'if'라고 생각합니까? "순수한"PHP입니까? – Francisc

1

나는보기 파일에 대한 액세스를 제한하는 사람을 본 적이 없지만 그렇게 할 수없는 이유는 없습니다. 보안을 강화하려면 시스템 루트와 응용 프로그램 폴더를 웹 루트 아래에두고 index.php가 해당 폴더의 한 디렉토리를 가리 키도록해야합니다. 그렇게하면 누군가 파일에 직접 액세스 할 가능성이 희박합니다.

폴더가 비어있는 이유는. 응용 프로그램 폴더는 코드를 저장하는 곳입니다. 시스템 폴더의 도우미, 라이브러리 및 모델 폴더는 소스 코드로 채워집니다. 목표는 응용 프로그램에 코드를 넣는 것입니다. 따라서 CodeIgniter의 향후 버전으로 업그레이드 할 때 구현 한 코드 나 기능을 중단하지 마십시오. 당신은 또한 ... 여기 말하는 수행하여

http://codeigniter.com/user_guide/general/creating_libraries.html

를 CodeIgniter의 기능에 과부하 "확장 기본 라이브러리"

+0

답변 해 주셔서 감사합니다. 불행히도 wwwroot 외부의 문서 업로드를 허용하지 않는 공유 웹 호스트를 사용하고 있습니다.필자는보기 파일에 대한 액세스를 제한하는 것을 고려하고있는 유일한 사람이라는 것을 당황스럽게 생각합니다. 개발자로서, 주요 목표 중 하나는 코드가 사용자 앞에 표시되지 않도록하는 것입니다. –

+0

그런 다음 시스템 및 응용 프로그램 폴더의 이름을 명확하게 변경하고 .htaccess를 통해 액세스를 허용하지 마십시오. –

1

사용자를 당신은 공유 호스트에 그들은 (당신이 하위 폴더를 만들 수 있습니다 wwwroot 폴더에 비해 아무것도에 대한 액세스를 허용하지 않는 경우 이름을 "private"로 지정) .htaccess 파일을 작성하여이 하위 폴더에 대한 모든 요청을 거부합니다. 그런 다음 codeigniter의 시스템 및 응용 프로그램 폴더를이 하위 폴더에 배치하고 index.php 폴더를 일반 위치에 배치합니다 (index.php의 "system"및 "application"변수를 새 경로를 올바르게 반영하도록 변경). 모든 코드는 직접 액세스로부터 안전합니다. :-)

편집 : 폴더에 관한 질문은 그 범위입니다. 도우미, 라이브러리, 후크 응용 프로그램 폴더는 응용 프로그램 별 항목입니다. 어쩌면 맞춤 제작 한 제품 일 수도 있고 제 3 자로부터 다운로드 한 제품 일 수도 있습니다. 그러나 아이디어는 당신이 "시스템 전체"항목을 가지고 있고 "응용 프로그램 전체"항목을 가지고 있다는 것입니다. 응용 프로그램 폴더가 있으면 특정 응용 프로그램 요구 사항을 충족시키기 위해 시스템 차원의 항목을 확장 할 수 있습니다 (자세한 내용은 @http://codeigniter.com/user_guide/general/creating_libraries.html 참조). 이것은 하나의 응용 프로그램에서 너무 많은 의미를 갖지는 않지만, 설치 프로그램에 여러 응용 프로그램이있는 경우 실제로 유용한 부분입니다.

관련 문제