Контроль доступа к статическим ресурсам - PullRequest
1 голос
/ 14 января 2012

В моем приложении я иногда генерирую новую картинку. После прочтения комментариев здесь я решил сохранить изображения в файловой системе и метаданные в базе данных, поэтому теперь мои файлы обслуживаются статически независимо от базы данных (bd дает пользователю имя файла, к которому он хочет получить доступ). , который они затем извлекают из статического файлового сервера).

Однако у меня проблема в том, что я не всегда хочу, чтобы пользователи видели изображения, созданные другими пользователями. Скажем, например, что пользователь Джо создает изображения A и B, а пользователь Сью создает C и D. Я не хочу, чтобы Джо мог видеть C и D, и я не хочу, чтобы Сью видела A и B. Поскольку все файлы обслуживаются статически, если Джо угадает URL для C, он может получить к нему доступ.

Поскольку способ обработки изображений в значительной степени находится вне контроля моего django, я не уверен, каким будет здесь решение, кроме шифрования файлов (что является сложным и ресурсоемким)

Ответы [ 2 ]

1 голос
/ 14 января 2012

Самый простой способ - использовать django send_file [1], чтобы сделать это. Это легко реализовать, но плохо масштабируется. Я использую его для обслуживания динамически генерируемых отчетов. Единственным преимуществом этого решения является то, что это весь код Python.

Лучший способ - использовать информацию по ссылкам sanmai. Вы также можете посмотреть здесь: http://www.sensibledevelopment.com/2010/11/django-sendfile-an-for-abstraction-large-file-serving-in-django/ для получения информации, специфичной для django.

1: http://djangosnippets.org/snippets/101/

1 голос
/ 14 января 2012

Используйте один или несколько шестнадцатеричных MD5 некоторых атрибутов как часть пути к изображению; путь будет довольно случайным.

...