2008-11-14 3 views
2

파일 업로드를 처리하는 PHP 스크립트가 있습니다. 이 스크립트는 업로드 된 파일을 구성하려고 시도하고 필요할 경우 파일을 옮길 수있는 새 폴더를 만들 수 있습니다. 이 파일들은 www 루트 디렉토리 아래에있을 것입니다 (즉, 웹 브라우저가 해당 파일에 액세스 할 수 있습니다).업로드 된 파일에 대해 어떤 파일 권한을 설정해야합니까?

제 질문은 생성 된 폴더 및 이동 된 파일 (mkdir()move_uploaded_file() 사용)에 대해 어떤 권한을 설정해야합니까?

답변

4

웹 서버가 해당 폴더에서 읽기 및 쓰기 권한이 필요하다면 실행 권한을 취소해야합니다 (유닉스 계열 시스템을 가정 할 때). 그렇지 않은 경우 사용자는 스크립트를 업로드하고 HTTP 요청을 보내 스크립트를 실행할 수 있습니다.

그러나 IMO는 잠재적 인 보안 구멍입니다. 파일을 폴더 외부에서 웹 서버 루트에 저장하는 것이 더 좋으므로 직접 접근이 불가능합니다. 웹 응용 프로그램에서 업로드 디렉토리를 검색하고 다운로드 링크 목록을 표시하는 PHP 다운로드 페이지를 가질 수 있습니다. 이 다운로드 링크는 다른 스크립트로 연결되어 저장 공간에서 파일을 읽고이를 사용자에게 보냅니다.

예, 이것은 많은 작업입니다. 그러나 시나리오는 매우 일반적이므로 예제 구현을 통해 소스 코드를 쉽게 찾을 수 있어야합니다. 그리고 서버가 해킹당하는 것이 훨씬 적습니다 ...

+0

이것은 실제로 CMS의 일부이며 파일은 모든 이미지입니다 (검증하지 않음 - 비 이미지는 삭제됨). 누군가의 위험을 이해합니다. 예를 들어 PHP 스크립트를 업로드하는 경우 –

+0

입력 된 데이터를 삭제할 수 있다면 충분히 안전합니다. 하지만 여전히 실행 플래그를 해제 할 것입니다. – Treb

+0

파일 자체에는 실행 권한이 설정되어 있지 않아야합니다. 그러나 디렉토리의 내용 목록을 제공하려면 웹 서버 사용자에게 실행 권한이 있어야합니다. –

0

특별히 대답하려면 766 (실행 권한 없음)이 가장 사용하기 쉬울 것입니다. 다른 끝에서 700 웹 사용자가 있지만 파일을 엉망으로 수 있습니다. 하지만 실제로는 최상의 결과를 얻을 수있는 파일을 사용하는 것이 달려 있습니다.

관련 문제