2014-04-02 4 views
1

현재 내 사용자 지정 CMS에서 작업하고 있으며 관리자가 공용 영역에서 PHP 파일 및 스타일 시트를 편집 할 수있게하려고합니다. 나는 파일에 접근하는 데 문제가 없으며 Google-ing의 결과로 얻은 결과와이 사이트를 다소 철저하게 검색하여 여러 아이디어를 시도했습니다. 출력 텍스트 영역 내의 각 파일의 내용 jQuery를 사용텍스트 영역 내에서 PHP 코드 편집 가능

<?php 
    $dir = "./"; 
    function get_files($directory = "") { 
    $dir = $directory; 
    if(is_dir($dir)) { 
      $dir_array = scandir($dir); 
     $filtered = array(); 
     foreach($dir_array as $file) : 
     if(stripos($file, '.') > 0) 
       array_push($filtered, $file); 
     endforeach; 
     return $filtered; 
    } else { 
     //Do something else 
      } 
    } 

:

받기 파일 :

$(document).ready(function() { 
    $('.file').each(function(){ 
    var file_link = this; 
    var HTML_FILE_URL = './' + file_link.id; 
    var file_id = file_link.id; 
    $(file_link).bind('click', function(){ 
     $('#filename').text(" - " + file_id); 
    $.get(HTML_FILE_URL, function(data){ 
       var htmlData = htmlEntities(data); 
     $('textarea').text(htmlData); 
     }); 
    }); 
    }); 
}); 


function htmlEntities(str) { 
    //This is a function which I found on this site. 
    //It gave me a good result on the html part 
    //However, the PHP codes were already executed. 
} 

을 나는 매우 어떤 경우 감사하겠습니다 지금까지 나는 경우 여기 하나는 올바른 방향으로 나를 가리킬 수 있습니다. 내가 완전히 간과하고있는 특정 PHP 메소드가 있습니까? 내가 참조 할 수있는 해결책이 있습니까?

감사합니다.

+0

의 범위를 넘어,이 위험 할 수 . –

+1

당신이 작동하는지 여부에 상관없이, 나는 이것이 매우 나쁜 생각이라는 것을 지적하는 것이 중요하다고 느낍니다. 사이트 관리자가 임의의 PHP 코드를 입력하도록 허용하는 것은 시스템에 넣을 수있는 가장 큰 보안 위험에 관한 것입니다. 관리자가 모두 신뢰할 수 있고 암호 저장 시스템이 완전히 안전하다고하더라도 (정말로 확실합니까?) 공격자가이 기능을 사용하여 시스템을 손상시킬 수있는 방법은 여러 가지가 있습니다. – Spudley

+0

누구도' moonwave99

답변

1

php가 항상 실행되므로 javascript를 통해 php 파일의 소스 코드를 직접로드 할 수 없습니다.

//getsource.php 
$editable_files = array('edit1.php', 'mybooks.php'); 

if(isset($_GET['file']) && in_array($_GET['file'], $editable_files)){ 
    echo file_get_contents($_GET['file']); 
} 

그럼 당신은 당신의 js에서이 파일을 부를 것이다 : 당신이해야 할 일은

로드 및 소스 코드를 반환하는 PHP 스크립트를 호출합니다. 다른 언급했듯이

,이 보안 취약점의 수를 열 수 있지만, 내가 CMS에서 PHP 파일을 수정을 허용하지 않을 보안 관점에서이 질문에

+0

감사합니다. 나는 안전을 위험에 둔다는 것을 안다. 나는 분명히 보안 측면에 대해 더 많이 보일 것이다. 그러나 지금은 그것을 작동시키는 것이 중요합니다. – Elarcrex

+0

@ user3489312 물론, 내 대답이 도움이 되었습니까? 아니면 여전히 문제가 있습니까? – Steve

+0

작업 중입니다. :) – Elarcrex