2012-03-06 5 views
0

DOMPDF를 사용하여 웹 앱 사용자가 자신이 완벽하게 제어 할 수있는 HTML 템플릿을 기반으로 PDF 인보이스를 만들 수있게했습니다.dompdf + file_get_contents를 안전하게 사용할 수 있습니까?

우리 서버에서 file_get_contents()를 사용하지 못하도록 설정했지만 원하는 경우 사용하도록 설정할 수 있습니다.

내 질문에, file_get_contents()를 사용하여 DOMPDF로 렌더링 (및 원격 또는 로컬 이미지로드)을 허용 할 수 있습니까?

여기에 보안 함정은 무엇입니까?

답변

1

file_get_contents()이 시스템에서 안전 할 수 있는지 여부에 대한 확실한 대답은 아직 충분하지 않습니다. 이를 위해 우리는 다른 PHP 응용 프로그램이 시스템에 있고/있거나 그 기능이 다른 곳에서 어떤 방식으로 사용되고 있는지를 알아야합니다.

그렇다면 DOMPDF 자체가 file_get_contents()을 사용하는 방식 만 고려하면 걱정할 필요가 없습니다. DOMPDF는이 함수를 사용하여 외부 참조 된 파일 (즉, CSS 또는 이미지)의 내용을 가져옵니다. DOMPDF는 컨텐츠를 처리하는 방법을 명시 적으로 표현하므로 컨텐츠가 HTML 문서의 외부에 있기 때문에 사용자가 추가로 피해를주지 않아야합니다.

악용 사례가 짧음 file_get_contents() DOMPDF가 안전하지 않게 기능을 활성화한다고 생각하지 않습니다. 일반적인 우려 사항은 기능이 정보 공개 공격과 같은 사악한 활동에 취약해질 수있는 방식으로 사용된다는 것입니다. 이것은 DOMPDF가 0.5.2로 해결 된 과거에 취약한 것입니다 (예 : DOMPDF_CHROOT/으로 설정하지 않는 등 안전하게 구성한 경우).

+0

지적 해 주셔서 감사합니다. 우리는 서버에서 file_get_contents()를 열어 두는 것에 관심이 있습니다. 이렇게하면 해커가 언급 한대로 정보 공개 공격을 시작할 수 있습니다. 이 함수를 열면 DOMPDF에서 이미지를 사용할 수있는 유일한 이유가 있습니다. 더 자세한 정보가 필요하십니까? – Jorre

+0

다른 곳에서는이 기능을 사용하지 않고 dompdf 0.5.2 이상을 사용하는 경우 사용자가 확인해야합니다. dompdf.php를 사용하지 않는 경우 이전 버전의 dompdf에서 공개 된 정보이므로 더 큰 보안을 위해 해당 파일을 제거 할 수 있습니다. – BrianS

+0

브라이언 (Brian)에게 감사드립니다. 어떤 종류의 PHP 쉘을 사용하여 액세스하려고 시도한 후 해커가 서버에서이 기능을 사용하려고 시도하는 해커는 어떨까요? 우리는 다른 곳에서는이 기능을 사용하지 않고 있지만 일반적으로 컴퓨터에서 열어야합니다. – Jorre

관련 문제