2012-12-15 3 views
1

그래서 CMS를 만들려하고 있습니다. 플러그인이 쉽게 기능을 확장 할 수 있도록 설계하고 싶습니다. 시스템 및 언어 설정도 포함).제한된 시스템 액세스로 PHP 플러그인 시스템 작성하기

다음은 까다로운 부분입니다. 개별적으로 패키지화 된 CMS가 아닌 많은 사이트 (예 : mycms.com/your-site)에서 일종의 호스트를 만들려고합니다.

pages 
- id 
- slug 
- title 
- content 
- site // The site id 
sites 
- id 
- path // e.g. your-site 
- password // hash 

가 그럼 난 파일 구조에서이 같은 플러그인을 저장할 수 있습니다 :

내가 이런 구조로 MySQL 데이터베이스를 설계하고있어 물론

plugins/ 
    42/ // Site id 
    hello-world/ // plugin name 
     hello-world.php 
     functions.php 
     css/ // ... 

, 중요한있다 여기에 보안 문제가 있습니다. 플러그인 작성자가 hello-world.php를 작성한다고 말하면 다음과 같습니다 :

<?php 
include '../../../core/config.inc.php'; 
echo $config['mysql']['password']; // Now they have my server's database password! 
?> 

어떻게 이런 일을 피할 수 있습니까? hello-world.php가 hello-world/내의 디렉토리에있는 파일에만 액세스 할 수 있도록 제어하려면 어떻게해야합니까? 필자는 기본적으로 플러그인이 자신의 디렉토리 외부의 파일에 액세스하지 못하게하려고합니다.

이것은 간단해야합니다. 맞습니까?

감사합니다.

+0

직접 통제하에있는 서버에서만 코드를 독점적으로 호스팅합니까? – Charles

+0

아직 확실하지 않습니다. 당신이 그것에 의존하는 해결책을 가지고 있다면, 꼭 그것을 제안하십시오. 그러면 나는 그것을 조사 할 것입니다. –

답변

0

이 플러그인은 결국 cms 프로세스에서 실행되므로 악의적 인 플러그인 작성자가 프로세스 전역 범위에서도 데이터를 스크래핑 할 수 있습니다. 여러분의 CMS에는 아마도 config.php가 어느 시점에 포함될 것입니다. 그러면 설정이 현재 전역 범위에 있으며 모든 코드에서 읽을 수 있습니다. 예를 들어 함수에 설정을 저장하여이를 피할 수 있습니다. 함수의 반환 값을 묻고 함수 호출에 대한 잠금 메커니즘을 고안하여이 설정에 액세스합니다.