php 외부파일 다운로드

PHP readfile() 기능을 사용하여 이미지 또는 다른 종류의 파일을 사용자의 하드 드라이브에 직접 다운로드하도록 강제할 수 있습니다. 여기서는 사용자가 한 번의 마우스 클릭으로 브라우저에서 이미지 파일을 다운로드 할 수있는 간단한 이미지 갤러리를 만들 것입니다. 또한 PDF 파일을 생성하고 브라우저 창 에서 열지 않고 다운로드로 사용자에게 푸시하려는 경우에도 편리합니다. 이렇게 하면 사용자가 PDF를 더 쉽게 다운로드할 수 있으며 사용자가 설치한 브라우저 플러그인에 관계없이 다운로드를 처리하는 방식에 대한 일관성도 제공합니다. 웹 서버는 일반적으로 .php 파일만 실행하도록 구성되므로 .jpg 또는 기타 파일 형식은 정상적으로 제공됩니다. 마찬가지로 워드 문서, PDF 파일 등과 같은 다른 파일 형식을 강제로 다운로드 할 수 있습니다. PHP readfile() 함수는 PHP 파일을 포함하여 파일을 그대로 읽습니다. GET 또는 POST 양식 데이터(또는 사용자가 스푸를 사용할 수 있는 다른 데이터)를 사용하여 실제 파일 이름을 전달하는 경우 주요 보안 허점이 열립니다. 호기심이 많은 사용자는 ?file=.와 같은 것을 입력하여 중요한 데이터베이스 연결 정보 또는 기타 시스템 데이터에 쉽게 액세스할 수 있습니다. /포함/db_connection.php. 중요한 정보에 대한 무단 액세스를 방지하기 위해 항상 일종의 식별자를 사용해야 합니다. 이러한 남은 파일을 찾는 것은 번거로운 작업이므로 자동화된 URL 퍼징 도구를 살펴볼 수 있습니다.

PDF 또는 이미지 파일을 가리키는 링크를 클릭하면 하드 드라이브에 직접 다운로드되지 않습니다. 브라우저에서만 파일이 열립니다. 또한 하드 드라이브에 저장할 수 있습니다. 그러나 zip 및 exe 파일은 기본적으로 하드 드라이브에 자동으로 다운로드됩니다. 내가 원하는 것은 파일을 다운로드 할 때 디스크에 파일을 쓰는 방법입니다. 이렇게하면 메모리 문제가 발생하지 않고 더 큰 파일을 다운로드 할 수 있습니다. readfile())은 대용량 파일을 자체적으로 전송하는 경우에도 메모리 문제가 나타나지 않습니다. fopen 래퍼가 활성화된 경우 URL을 이 기능을 사용하여 파일 이름으로 사용할 수 있습니다. 진실을 말하고, 당신은 가능한 악용이 있다는 것을 약간의 행운을 가지고 있을 것이고 서버의 파일 시스템이 구조화되는 방식 (즉, LFI 취약점을 포함하는 스크립트와 비교하여 관심있는 스크립트의 상대경로는 무엇인가)를 파악해야 하므로 서버를 탐색하려는 경우 샌드박스/VM을 사용하십시오. 구스타보 로드리게스의 코멘트에서 제시한 대로 서버가 실제로 제대로 구성되지 않으면 운이 좋을 수 있습니다. 원격 파일에서 검색(오프셋)이 지원되지 않습니다.

로컬이 아닌 파일을 찾으려고 하면 작은 오프셋에서 작동할 수 있지만 버퍼링된 스트림에서 작동하기 때문에 예측할 수 없습니다. 이 지시문을 변경할 수 없거나 기꺼이 변경하지 않으려면 cURL로 파일을 다운로드하는 방법에 대한 내 가이드를 확인해야합니다.