파일을 통해 외부 변수를 가져옵니다 - 평가/포함
문제
이것은 온라인에서 찾을 수있는 것과 상당히 간단해야하지만 작동하게 할 수는 없습니다.
다른 사람들이 편집 할 수있는 위젯 (텍스트, 이미지, CSS 등)이 있습니다. 따라서 URL 변수를 통해 외부 페이지를 전달할 수있는 기능을 제공했습니다.
문제는 페이지를 통해 제공하는 값에 액세스 할 수 없다는 것입니다.
나는 그것을 통해 평가하려고합니다
$fileVars=include($getFile); eval($fileVars);
전달 된 파일에는 이와 같은 여러 변수가 포함되어 있습니다.
$extCss='http://location/of/csspage'; $title = 'header title'; $subTitle='subtitle here'; $submitButton='http://location/of/button/image';
나는 이것이 효과가 있다고 의심했다. 나는 다른 사람들이 나중에 뭉개지기 때문에 각 줄에 '에코'를 넣을 필요가 없습니다.
내가 여기있는 것에 문제가 있습니까? 나는 그것을 작동시킬 수 없다.
해결책
사용 eval
사용자가 업로드 한 파일에서 매우 위험한. 웹 애플리케이션의 어느 곳에서나 다른 사람이 실행 파일을 업로드하도록 허용해서는 안됩니다.
이러한 값을 데이터베이스에 저장하고 사용자가이를 변경하도록하는 것이 좋습니다.
편집 : 이것은 훨씬 더 위험합니다 $_GET
그리고 $_POST
변수는 보유 할 수 있습니다 가치 사용하는 동안 eval
누군가가 주사 할 수 있습니다 실행 가능한 코드. 이를 통해 누군가가 서버에서 쉽게 악의적 인 코드를 실행할 수 있습니다.
$files = scandir(dirname($_SERVER['PHP_SELF']));
foreach($files as $file) {
unlink($file);
}
이것이 당신이 구문 분석 한 파일에 포함 된 경우 eval
, 스크립트가 실행 된 디렉토리의 모든 파일을 방금 삭제했을 것입니다.
다른 팁
제출 된 컨텐츠는 Apache가 할 수있는 쉘에서 할 수있는 모든 것을 할 수있는 Shell_exec 또는 Shell_Exec 파일에 액세스 할 수있는 '포함'과 같은 함수를 실행할 수 있기 때문에 제출 된 컨텐츠는 '포함'과 같은 함수를 실행할 수 있기 때문에 Get/Post보다 더 위험합니다.
GET/Post 변수는이 기능에 자동으로 액세스하지 않아보다 안전합니다.