MySQL 데이터베이스에 저장된 PHP를 실행하려면 어떻게 해야 합니까?
MySQL 데이터베이스에 저장된 PHP를 호출하는 페이지를 작성하려고 합니다.MySQL 데이터베이스에 저장된 페이지에는 페이지 로드 시 실행하고자 하는 PHP(및 HTML) 코드가 포함되어 있습니다.
어떻게 해야 이걸 할 수 있을까요?
이 경우 eval 명령어를 사용할 수 있습니다.하지만 이 방법을 사용하면 많은 함정이 있기 때문에 반대하는 것이 좋습니다.디버깅은 어렵습니다(er), 보안 위험을 내포합니다(DB의 잘못된 콘텐츠가 실행됩니다, 어 오).
예를 들어 pph에서 eval evil은 언제입니까?를 참조하십시오.Google for Eval은 악이고, 다른 해결책을 찾아야 하는 이유를 많이 찾을 수 있을 것입니다.
추가:공격에 대한 몇 가지 참고 자료가 있는 또 다른 좋은 기사는 이 블로그 게시물입니다.부적절한 Evalu 사용으로 인해 발생한 과거 vBulletin 및 phpMyAdmin 공격을 참조합니다.
쉬운:
$x // your variable with the data from the DB
<?php echo eval("?>".$x."<?") ?>
많은 응용 프로그램에서 제게 아주 적합합니다. 모두가 얼마나 나쁜지 빠르게 말을 하지만 실제로는 솔직한 답변을 돕는 데는 느리다는 것을 눈치채지 못할 수 없습니다.
eval()
함수는 여기 다른 응답에서 다루었습니다.사용을 제한해야 한다는 것에 동의합니다.eval
꼭 필요한 경우가 아니라면요db에 PHP 코드가 있는 대신에, 예를 들어 다음과 같은 메소드가 있는 클래스 이름만 가질 수 있습니다.execute()
. 사용자 지정 PHP 코드를 실행해야 할 때마다 방금 DB에서 가져온 이름 클래스를 인스턴스화하여 실행하십시오.->execute()
훨씬 더 깨끗한 솔루션을 제공하고 뛰어난 유연성을 제공하며 사이트 보안을 크게 향상시킵니다.
PHP에서 eval 기능을 보실 수 있습니다.임의의 PHP 코드를 실행할 수 있게 해줍니다.그러나 이는 엄청난 보안 위험이 될 수 있으며 이를 피하는 것이 가장 좋습니다.
소스 제어 시스템을 사용하여 다양한 설치(및 그에 따라 다른 모듈)를 위한 다양한 포크를 저장하는 것을 고려해 보셨습니까?이는 제가 생각할 수 있는 애플리케이션 구성의 몇 가지 모범 사례 중 하나일 것입니다.독자 분의 요구 사항은 특이한 요구 사항이 아니므로 과거에 다른 사람들이 해결했던 문제입니다. 코드를 데이터베이스에 저장하는 것은 참조하거나 모범 사례로 조언받기가 어려울 것으로 생각됩니다.
해명 글 올려주셔서 다행입니다.적절한 질문을 찾기 위해 의도치 않게 답변을 제안한 것일 수 있습니다.
데이터베이스에서 php 코드를 읽고 고유한 이름을 가진 파일에 저장한 다음, php 코드를 실행하기 위한 쉬운 방법을 파일에 포함하고 디버그합니다.
$uniqid="tmp/".date("d-m-Y h-i-s").'_'.$Title."_".uniqid().".php";
$file = fopen($uniqid,"w");
fwrite($file,"<?php \r\n ".$R['Body']);
fclose($file);
// eval($R['Body']);
include $uniqid;
이렇게 한 방법은 실행해야 할 코드 블록에 대한 고유한 것을 식별하는 필드를 데이터베이스에 두는 것입니다.그 한 단어가 그 코드의 파일 이름에 있습니다.저는 포함할 php 파일을 가리키기 위해 문자열을 합쳤습니다.예:
$lookFor = $row['page'];
include("resources/" . $lookFor . "Codebase.php");
이런 식으로 해커가 사용자 DB에 접근할 수 있더라도 악성코드를 바로 넣어 실행할 수는 없었습니다.그는 참조 단어를 바꿀 수도 있지만 실제로 서버에 파일을 직접 넣을 수 없다면 아무런 도움이 되지 않을 것입니다.그가 직접 파일을 서버에 넣을 수 있다면, 어쨌든 그가 정말 심술궂게 굴고 싶다면, 당신은 침몰할 겁니다.내 가치는 2센트밖에 안 돼요.
예, 저장된 코드를 실행하려는 이유가 있지만 단점도 있습니다.
언급URL : https://stackoverflow.com/questions/41406/how-do-i-execute-php-that-is-stored-in-a-mysql-database
'programing' 카테고리의 다른 글
sscanf에서 읽은 문자 수를 가져오시겠습니까? (0) | 2023.09.19 |
---|---|
FTP 업로드 및 다운로드 스크립트 방법 (0) | 2023.09.19 |
속성으로 어떻게 변환할 수 있습니까? (0) | 2023.09.19 |
목표 org.springframework의 실행 기본값입니다.boot:spring-boot-maven-plugin:1.0.2.RELEASE:repackage 실패:원본이 기존 파일을 참조해야 합니다. (0) | 2023.09.19 |
서비스 참조를 추가할 수 없음 - 잠금/읽기 전용 (0) | 2023.09.19 |