2009-07-07 4 views

답변

7

exec()escapeshellarg()에서보세요 : 당신은 IO을 더 세밀하게 제어해야 할 경우

exec('command -param=' . escapeshellarg($_GET['argument'])); 
+0

것은 당신이 그 매개 변수를 허용 된 사이트 목록에 있는지 확인하십시오! 누군가는 & argument = foo % 20 % 38 % 38 % 20rm % 20-rf % 20 % 47을 보내려 시도 할 수 있습니다. 즉 : command -param = foo && rm -rf/ –

+2

escapeshellarg가 당신을 위해 그것을 처리해야합니다. – Greg

+0

나는 루트로서 서브 프로세스를 실행할 필요가 있다고 덧붙이고 싶습니다. 그걸 해결하기 위해 escapeshellarg 쉘 스크립트를 만들었습니다. 이스케이프 된 인수를 사용하여 프로세스를 호출했습니다. 셸 스크립트는 사용자의 스티키 비트를 받았으며 루트가 소유했습니다. 프로세스를 시작하는 웹 서버를 실행하는 사용자인데도 루트로 실행합니다. 이렇게하면 더 위험합니다. 그러므로 코드를 안전하게 작성했는지 확인하고 코드가 안전한지 확인하십시오. –