bionote.net

[PHP] 웹을 통해서 작업을 실행시키기


작성한 프로그램을 웹을 통해서 서비스하거나 내부 프로그램으로 작업을 수행해야하는 경우가 종종 발생한다. 이런 경우 PHP에서는 exec나 system 함수를 사용해서 처리할 수 있다. C나 다른 언어와 같은 기능을 하는 함수이다. perl처럼 backtick을 사용할 수도 있다.

하지만 주의할 점이 있는데, 웹을 통해서 실행되서는 안되는 프로그램이나 보안상 치명적인 명령어들이 실행되어 질수도 있다는 점이다.
예를들면
[CODE] $ret = system("ls $param");[/CODE]
이라는 행에서 사용자가
[CODE] $param = "; rm -rf /";[/CODE]
를 할당해버리면 모든 파일이 삭제되어 버리는 비극을 경험할 수도 있다는 말이다.

escapeshellcmd 함수를 사용하면 이런 문제로부터 조금은 안전해질 수 있다. 이 함수는 쉘메타문자들을 이스케이프해서 원치않는 명령어가 실행되는 것을 방지해 준다.
사용법은 다음과 같다.
[CODE] $param = escapeshellcmd($param); $ret = system("ls $param");[/CODE]
2006/02/08 16:51 2006/02/08 16:51
top

TRACKBACK ADDRESS :: http://bionote.net/tt/blna999/trackback/76

Leave a comment..