2011-05-08 6 views
0

나는 클라이언트 업로드 파일을 가지고있는 클라이언트와 사용자간에 안전한 파일 전송을 만들고, 사용자와 공유하려는 파일을 클릭하려고합니다.파일 업로드 : 다운로드시 사용자 보안

클라이언트가 (이 URL이 데이터베이스에 저장되어있는) 사용자에게 URL을 통과 할 때 내 문제는 온다 예 :

은 그럼 이제 유저가 URL을 클릭하고, 안전하지 않은되기 때문에 http://www.example.com/files/my-new-file.pdf 사람 기술적으로이 파일을 다운로드 할 수 있습니다. 어떻게하면이 파일을 지정된 사용자가 다운로드 할 수 있도록 만들 수 있습니까?

나는 이것이 무엇을하려하는지 감추기를 희망하고이 파일들이 안전한지 확인하려고 노력하고있다. 어떤 생각이라도 감사 할 것입니다.

+0

정답을 표시하는 것을 잊지 마세요. 지금까지는 마이클의 것으로 보입니다. – afarazit

+0

좋은 알림! 감사! – Justin

답변

0

등록 된 사용자에게 보안 환경 설정을 추가하면 효과가 있습니다. 파일을 업로드하려면 사용자를 로그인해야합니다.

다른 사람이 파일을 업로드 할 때마다 이메일 주소를 물어보고 비밀번호로 다운로드하려는 사용자가 사용할 수있는 문자열 키 (서버에서 무작위로 생성하여 업로드 한 파일에 매핑 됨)를 보냅니다. 업 로더가 공유하고자하는 사용자와 키 ...

+0

그래, 사용자가 로그인해야하지만 파일에 OPENness가 있더라도 상관 없습니다. – Justin

1

당신은 오히려/파일/디렉토리는 웹을 통해 직접 콘텐츠를 제공하는 것보다, 자원에 대한 액세스를 제어하기 위해 PHP 페이지를 사용한다

공유하기 섬기는 사람.

예를 들어, 간단한 PHP 페이지는 파일 시스템에서 파일을 읽고이를 브라우저에 다운로드 할 수 있습니다.

http://www.higherpass.com/php/Tutorials/File-Download-Security/

당신은 보장 할 것 :

  • 만 유효한 파일 요청이 요청 된 파일에 액세스 할 수있는 유효한 인증 된 사용자로부터입니다

  • 다운로드 할 수 있습니다

간단한 exa 이 URL은 file 매개 변수의 디렉토리 탐색에 취약합니다. "../ .."유형의 공격으로부터 보호하려면 PHP 스크립트에 전달되는 모든 파일의 유효성을 검사해야합니다. 이것은 실제로 상당히 복잡해질 수 있습니다.

고유하고 복잡한 임의의 토큰으로 파일을 참조하는 토큰 시스템을 사용하면 효과가 있습니다. 데이터베이스는 실제 파일 위치를 파일 시스템에 저장하고 /download.php?token=blah와 같은 요청이 수신되면 ... a) 토큰 "blah"가 참조하는 파일의 위치를 ​​조회하고 b) 호출 한 사용자의 세션은 파일에 액세스 할 수 있습니다. 모두 정상이면 파일을 사용자에게 제공하고, 그렇지 않으면 오류를 발생시키고 불법적 인 액세스를 기록하십시오.