0

Это сотрясало меня всю ночь.Разрешения для политик в Bucket Amazon S3 Не разрешать API Dropbox вытягивать файлы из ведра

Я написал приложение DropBox в PHP/MYSQL, которое отлично работало, оно извлекает файлы из Buzz Amazon S3 и отправляет их пользователям в папки Dropbox.

Тогда я изменил политику ведро на ведро Amazon S3, чтобы файлы потянуться из немногих рефереров и подписал URLS (пример: /musicfile.mp3?AWSAccessKeyId=[accesskeyid] & Истекает = [истекает] & Подпись = [подпись]).

Это отлично работает для всех целей, за исключением того, что я узнал, что моя функциональность Dropbox больше не работает, потому что вы передаете Dropbox API URL-адрес mp3 на Amazon S3, а на стороне Dropbox они вытаскивают файл, так что теперь У меня есть политика ведра, позволяющая только определенным реферерам, dropbox получает разрешение, и API говорит мне, что он не сработал.

Так что я думал, что легко исправить, я просто добавлю? AWSAccessKeyId = blah blah в конец файла, передаваемого в dropbox, и все будет работать мгновенно, но это не потому, что файл тогда не заканчивается в расширении Dropbox признает, что он снова не работает.

Затем я подумал, что просто добавлю реферер из Dropbox в свою политику ведра, я до сих пор не знаю, что это такое, и добавил все варианты dropbox.com и api.dropbox с и без https, все с не повезло.

Если у кого-то есть идея или решение, вы серьезно сделаете мою неделю.

Абсолютная последняя вещь, которую я хочу сделать, - это принудительно загрузить файл сначала на мой сервер, а затем отправить в Dropbox, я действительно не хочу этого делать, и я знаю, что у меня было это отлично, как было , и он работает мгновенно, когда я полностью удаляю свою политику ведро, я просто хочу, чтобы он работал с ним.

ответ

1

Я предполагаю, что вы упомянули про передачу URL-адреса Dropbox, который вы используете the Saver? Если это так, вы можете сказать Saver, какое имя файла использовать, поэтому дайте ему авторизованный URL-адрес и укажите имя файла, чтобы было расширение файла. Например:

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

или, в JavaScript:

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

Когда вы говорите, что «поскольку файл тогда не заканчивается расширением Dropbox признает, так что снова не работает,» что делать вам значит, точно? Что не так, когда файл не имеет расширения?

0

Когда все остальное не удается ... проверьте журналы.

Turn on logging for your bucket, запустите несколько тестов, подождите несколько минут, пока не появится журнал, а затем просмотрите журналы, чтобы узнать, что такое референт. Кажется, безопасная ставка на то, что рефери не будет, потому что пользовательский агент, который не является веб-браузером (например, backbox-процессы Dropbox), обычно не имеет причины отправлять реферера.

Если это какое-то утешение, «закрепление» ведра путем сдерживания реферирования в значительной степени похоже на то, что он не защищает ведро.Это очень просто поражение, и поэтому только действительно эффективная защита против двух классов людей:

  • честных людей
  • лентяев

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