0

이것은 밤새 미친 듯이 보였습니다.Amazon S3 Bucket Policy Permissions Dropbox API가 양동이에서 파일을 가져 오지 못하도록

완벽하게 작동하는 PHP/MYSQL의 DropBox 응용 프로그램을 작성했으며 Amazon S3 Bucket에서 파일을 가져 와서 Dropbox 폴더로 보냅니다.

그럼 I는 파일 추천자 단지 소수로부터 인출 될 수 있도록 아마존 S3 버킷의 버킷 정책 변경 및 URL (예를 체결 : /musicfile.mp3?AWSAccessKeyId=[accesskeyid] &가 =에게 만료 [] 만료 & 서명 = [서명]).

내 Dropbox 기능이 더 이상 작동하지 않는다는 것을 제외하면이 기능은 모든 용도에 유용합니다. Dropbox API를 Amazon S3의 mp3 URL에 전달하고 Dropbox 측에서 파일을 가져 왔으므로 특정 리퍼러 만 허용하는 버킷 정책이 있으며 드롭 박스는 권한이 거부되고 API가 실패했다고 알려줍니다.

그래서 쉽게 해결할 수 있을까요? 단순히 Dropbox에 전달되는 파일의 끝에? AWSAccessKeyId = blah blah를 추가하면 모든 것이 즉시 작동하지만 파일이 끝나지 않아서가 아닙니다. Extension에서 Dropbox가 인식하므로 다시 작동하지 않습니다.

그럼 Dropbox의 리퍼러를 제 양동이 정책에 추가하고 싶습니다. 그러나 Dropbox.com 및 api.dropbox의 모든 변형을 https가 포함되거나 포함되지 않은 모든 변형을 추가했습니다. 불운.

누구나 아이디어 나 해결책이 있다면 내 주를 진지하게 만들 것입니다.

내가하고 싶은 절대적인 일은 파일을 먼저 내 서버로 다운로드 한 다음 dropbox에 보내야한다는 것입니다. 실제로 그렇게하고 싶지는 않습니다. 이미 제대로 작동하고 있습니다. , 그리고 그것은 내가 버켓 정책을 완전히 제거했을 때 즉시 작동합니다. 단지 그것으로 작업하기를 원합니다.

답변

1

Dropbox에 URL을 전달한다고 언급 했으므로 the Saver을 사용하고 있습니까? 그렇다면 Saver에게 사용할 파일 이름을 알 수 있으므로 승인 된 URL을 지정하고 파일 이름을 지정하여 파일 확장명을 지정하십시오. 자바 스크립트에서

<a href="https://...?AWSAccessKeyId=..." class="dropbox-saver" data-filename="myfile.txt"></a> 

또는 : 예

Dropbox.save('https://...?AWSACcessKeyId=...', 'myfile.txt'); 

당신이 당신에게 무엇을 "파일이 다음 확장자로 끝나지 않기 때문에 다시 작동하지 않도록 보관 인식"라고 정확히? 파일에 확장명이 없으면 어떤 문제가 발생합니까?

0

그 밖의 모든 작업이 실패하면 ... 로그를 확인하십시오.

Turn on logging for your bucket 일부 테스트를 실행하고 로그가 나타나기를 기다린 다음 로그를 검사하여 리퍼러가 무엇인지 확인하십시오. 웹 브라우저가 아닌 사용자 에이전트 (예 : Dropbox의 백엔드 프로세스)가 일반적으로 referer를 전송할 이유가 없으므로 referer가 없을 것이라는 것은 안전한 방법입니다.

위안이라면 리퍼러를 제한하여 버킷을 '보안 설정'하는 것은 버킷을 전혀 고정하지 않는 것과 같습니다.그것은 패배에 매우 간단하고, 그래서 두 사람의 클래스에 대한 유일한 정말 효과적인 보호의 :

  • 정직한 사람
  • 게으른 사람

http://en.wikipedia.org/wiki/Referer_spoofing