호스트가 proc_open 및 shell_Exec을 비활성화하고 공격자가 사용하는 경우 문제를 일으킬 수있는 모든 기능을 서버 공격으로 인해 PDF 파일을 생성하기 위해 wkhtmltopdf를 호출하는 공유 호스팅 환경에서 PHP 클래스를 사용하고있었습니다. 호스트가 이러한 기능을 사용 중지하기 전에 모두 제대로 작동했습니다. 내가 사용하는 PHP 클래스에서 proc_open 함수를 비활성화하여 더 이상 작동하지 않는 메소드가 있습니다. 정확한 결과를 반환하는 아래 메소드 대신 사용할 수있는 altenative가 있습니까? 어떤 도움을 주셔서 감사합니다. 백틱 연산자의PhP에서 proc_open의 대체 기능은 무엇입니까?
echo `wkhtmltopdf.exe test.html test.pdf`;
사용이 shell_exec()와 동일합니다 :
private static function _pipeExec($cmd,$input=''){
$proc=proc_open($cmd,array(0=>array('pipe','r'),1=>array('pipe','w'),2=>array('pipe','w')),$pipes);
fwrite($pipes[0],$input);
fclose($pipes[0]);
$stdout=stream_get_contents($pipes[1]);
fclose($pipes[1]);
$stderr=stream_get_contents($pipes[2]);
fclose($pipes[2]);
$rtn=proc_close($proc);
return array(
'stdout'=>$stdout,
'stderr'=>$stderr,
'return'=>$rtn
);
}
이 특정 기능의 작동 방식은 proc_open 없이는 불가능합니다. 동일한 최종 결과를 얻기 위해 대체 기술이있을 수도 있지만이 기능 외에도 대체해야 할 가능성이 큽니다. 그러나 우리는 코드가 많은 도움을주기 위해 사용되는 코드에 대해 더 많이 알아야합니다. – SDC
@SDC -이 코드는 다음 클래스를 사용하여 HTML에서 PDF 파일을 생성하는 데 사용됩니다. http://code.google.com/p/wkhtmltopdf/wiki/IntegrationWithPhp – Roland
유일한 조치는 외부 웹 서비스에 이러한 조치를 수행 할 수있는 권한을 부여하는 것입니다. 정의에 따르면 환경이 잠겨 있으므로 외부에서 아무 것도 호출 할 수 없습니다. –