PHP로 웹개발 작업중 가장 번거로운 작업은
변수의 디버깅 작업일겁니다.
특히나 타인이 작업한 내용물을 디버깅 하려면 개발자의 변수 선언 스타일이
자신과는 다르거나, 혹은 넘어온 변수값이 쉽사리 파악되지 않아 고생하기 일쑤입니다.
이때 변수의 디버깅을 좀 쉽게 하려면 get_defined_vars 라는 함수를 이용하면 편리합니다.
웹에서 실행시
v_1 : 1234567890
v_2 : 대한민국
v_3 : 우리나라
v_4 : 프로그래머
v_5 : apple
v_6 : google
v_7 : samsung
처럼 출력이 되어서 변수명과 그 값들을 한눈에 알아볼수가 있게됩니다.
하지만 이게 양날의 검인게 해킹에 이용될 수도 있다는 겁니다.
페이지 끝에 한줄만 삽입하면 DB 연결문부터 서버의 각종 설정값까지
한눈에 알아보고 취약점을 공격 할 수 있기 때문인데, 뭐 페이지내에
해커가 get_defined_vars 삽입할 정도라면 이미 그 서버는 끝장 났다고
할 수도 있겠습니다만, 해커가 손이라도 한번 더 가게 하려면
PHP.INI 에 disable_functions = get_defined_vars 한줄 삽입하시면 됩니다.
혹시 모를 해킹이 걱정이 되신다면 get_defined_vars의 경우는 짧은 디버깅 기간에만
사용하시고 디버깅이 끝나면 반드시 get_defined_vars 를 disable 하시는게 좋겠습니다.
다만 get_defined_vars 를 disable 하시면 phpMyAdmin 을 정상적으로
사용하기 어려워진다는 단점도 존재합니다.
MySql 의 경우 DB 디자인툴은 phpMyAdmin 말고도 Oracle 사에서 제공하는
GUI 툴인 MySQL Workbench 도 있으므로 참고하시길 바랍니다.
(이경우에도 3306 포트와 특정 IP만 접속을 허용해야 하는 문제가 있기는 합니다.^^)
P.S : 언제나 펌은 자유입니다. 다만 출처 할 줄 정도는 부탁드립니다.
변수의 디버깅 작업일겁니다.
특히나 타인이 작업한 내용물을 디버깅 하려면 개발자의 변수 선언 스타일이
자신과는 다르거나, 혹은 넘어온 변수값이 쉽사리 파악되지 않아 고생하기 일쑤입니다.
이때 변수의 디버깅을 좀 쉽게 하려면 get_defined_vars 라는 함수를 이용하면 편리합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php $v_1 = "1234567890"; $v_2 = "대한민국"; $v_3 = "우리나라"; $v_4 = "프로그래머"; $v_5 = "apple"; $v_6 = "google"; $v_7 = "samsung"; $arr = get_defined_vars(); foreach ( $arr as $vName => $value ) { echo $vName." : ".$value."<br>"; } ?> |
웹에서 실행시
v_1 : 1234567890
v_2 : 대한민국
v_3 : 우리나라
v_4 : 프로그래머
v_5 : apple
v_6 : google
v_7 : samsung
처럼 출력이 되어서 변수명과 그 값들을 한눈에 알아볼수가 있게됩니다.
하지만 이게 양날의 검인게 해킹에 이용될 수도 있다는 겁니다.
페이지 끝에 한줄만 삽입하면 DB 연결문부터 서버의 각종 설정값까지
한눈에 알아보고 취약점을 공격 할 수 있기 때문인데, 뭐 페이지내에
해커가 get_defined_vars 삽입할 정도라면 이미 그 서버는 끝장 났다고
할 수도 있겠습니다만, 해커가 손이라도 한번 더 가게 하려면
PHP.INI 에 disable_functions = get_defined_vars 한줄 삽입하시면 됩니다.
혹시 모를 해킹이 걱정이 되신다면 get_defined_vars의 경우는 짧은 디버깅 기간에만
사용하시고 디버깅이 끝나면 반드시 get_defined_vars 를 disable 하시는게 좋겠습니다.
다만 get_defined_vars 를 disable 하시면 phpMyAdmin 을 정상적으로
사용하기 어려워진다는 단점도 존재합니다.
MySql 의 경우 DB 디자인툴은 phpMyAdmin 말고도 Oracle 사에서 제공하는
GUI 툴인 MySQL Workbench 도 있으므로 참고하시길 바랍니다.
(이경우에도 3306 포트와 특정 IP만 접속을 허용해야 하는 문제가 있기는 합니다.^^)
P.S : 언제나 펌은 자유입니다. 다만 출처 할 줄 정도는 부탁드립니다.


덧글