mixed eval ( string $code_str )
PHP코드를 테스트 할때 사용한다고 합니다
예제 #1
<?php
|
This is a $string with my $name in it.
이건 그대로 echo를 이용하여 출력한 결과입니다.
뭐라고 더 설명할것 없이 제대로 출력된 결과죠.
This is a cup with my coffee in it.
이게 eval함수를 사용하여 나타낸 결과입니다.
작은 따옴표를 사용해서 문자열로 인식해 그대로 출력해야되지만,
위에 echo에 반대로 $string에 실제 변수값이 들어가고, 또한 $name에 실제 변수값이 들어간것을 알수 있습니다.
이걸 이용해서 DB에 함수를 저장해놓고 불러와서 사용할수도 있겠죠
그러나 만약 아래와 같이 사용하면 악성 사용자들에 의해 위험한 환경에 놓일수도 있습니다
예제 #2
<?php |
만약 파일명.php?data=phpinfo(); 처럼 입력한다면 phpinfo()를 실행해 실제 서버 정보라던지 중요사항이 드러날수도 있습니다
예를들어 DB에 데이터가 저장되어있다면 mysql_fetch_array(mysql_query("select field tb where id=$id")); 를 입력하여 아이디를 빼내거나 하는것도 어렵지는 않다는 말입니다
심지어 이런것도 가능하겠죠 eval( ' ?> test <?php ' ); 또는 eval('include("//www.naver.com");');
이렇게 한다면 저 부분에 악성코드를 넣어놔도 어떻게 할수없는부분이 나올수도 있습니다.
eval함수는 테스트용도로만 사용하는것을 추천합니다.
전혀 변함이 없는 변수를 사용한다거나 해도 '절대' 라는것은 없습니다.
안전을 최우선으로! 감사합니다~
'PHP' 카테고리의 다른 글
[Centos 7] PHP 7.3 설치 (0) | 2019.05.10 |
---|---|
자바 스크립트(javascript)에서 POST 전송하기 (1) | 2018.10.27 |
[PHP] php 파일 확장자 변경 (나만의 확장자 만들기) (0) | 2018.05.20 |
[PHP] .php 확장자 생략으로 주소 줄이기! (0) | 2018.05.20 |
[PHP] <?php 를 줄여보자! short_open_tag (0) | 2018.05.20 |
댓글