Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Использование сессий для ограничения разрешения скачивания файла [RSS Feed]

#1 Дек. 23, 2012 19:07:01

0xFF
Зарегистрирован: 2012-12-23
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Использование сессий для ограничения разрешения скачивания файла

Здравствуйте,

Только начинаю изучать django, потихоньку пытаюсь писать. Сделал возможность загрузки файла на сервер и скачивания файла с сервера. Теперь пытаюсь понять как сделать так, что бы скачать файл мог только тот кто его и загрузил, на основании кукисов, то есть когда пользователь заходит на страницу ему в кукисы записывается какой то айди, и потом файл загруженый пользователем может быть скачан только пользователем с таким же айди в кукисах. Ну или как правильнее это сделать без регистрации пользователя на сайте. Читал документацию джанго по сессиям но так и не сообразил как применить это для моего случая. Кстати вот как сделал возможность скачивания файла:

urlpatterns += patterns('',
    (r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}),
)

файлы кладу в MEDIA_ROOT. Если я что то делаю не правильно, или можно делать по другому расскажите или тыкните где почитать про это. Может еще как то генерировать сложную ссылку а не давать прямую, вообщем ваши замечания

Офлайн

#2 Дек. 24, 2012 10:18:20

inoks
От: Russia
Зарегистрирован: 2012-12-11
Сообщения: 343
Репутация: +  35  -
Профиль   Адрес электронной почты  

Использование сессий для ограничения разрешения скачивания файла

со статик файл скорее всего просто не получится

Попробуйте через django-private-files.
https://django-private-files.readthedocs.org/en/latest/usage.html

в описании есть пример, который можно доработать под ваши нужды

from django.db import models
from django.contrib.auth.models import User
from private_files import PrivateFileField
def is_owner(request, instance):
    # тут проверять что ключ есть в session
    return (not request.user.is_anonymous()) and request.user.is_authenticated and
                   instance.owner.pk = request.user.pk
class FileSubmission(models.Model):
    description = models.CharField("description", max_length = 200)
    owner = models.ForeignKey(User) # тут хранить ключ доступа
    uploaded_file = PrivateFileField("file", upload_to = 'uploads', condition = is_owner)

Офлайн

#3 Дек. 24, 2012 11:01:05

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Использование сессий для ограничения разрешения скачивания файла

0xFF,
Идея понятна, мотивация не очень ясна. Ваш пользователь сможет скачивать только те файлы, что он сам закачал, но только с той машины, с того браузера, с той ОС с которой он их заливал. При этом ему нельзя чистить куки, иначе он потеряет свои файлы навсегда, причем Вы не очень защищены от подделки и кражи самих куков. Если Вы по какой то причине не хотите авторизовывать своих пользователей, то это же не мешает Вам дать возможность защищать доступ к своим файлам неким паролем, хеш-сумму которого Вы и будете хранить в связке с файлом. Это надежнее, проще и юзабильней.



Офлайн

#4 Дек. 24, 2012 11:17:00

0xFF
Зарегистрирован: 2012-12-23
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Использование сессий для ограничения разрешения скачивания файла

FishHook

Сейчас обьясню, идея в том что бы пользователь не мог получить прямую ссылку на файл и вставить потом эту ссылку куда нибудь и использовать мой сервер в качестве ресурса, да и впринципе не смог дать скачать тот же файл по этой ссылке другому человеку. Принцип я залил - я и скачал.

Офлайн

#5 Дек. 24, 2012 11:40:11

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Использование сессий для ограничения разрешения скачивания файла

>>>прямую ссылку на файл и вставить потом эту ссылку куда нибудь и использовать мой сервер в качестве ресурса
Это решается по-другому, например предоставлением временной ссылки или загрузкой изображения на страницу аяксом.
>>>да и впринципе не смог дать скачать тот же файл по этой ссылке другому человеку
Скачает сам, отправит почтой.



Офлайн

#6 Дек. 24, 2012 11:47:00

0xFF
Зарегистрирован: 2012-12-23
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Использование сессий для ограничения разрешения скачивания файла

FishHook

Ну пусть отправляет, это уже его дело, я с точки зрения того что бы меня не обвинили в раздаче нелегального контента, он куда нибудь эту ссылку вставит, а там какая нибудь нелегалка. Вопрос, какой айпи, мой айпи, кому атата, мне. Именно с этой точки зрения.

Офлайн

#7 Дек. 24, 2012 11:55:37

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Использование сессий для ограничения разрешения скачивания файла

Что атата, прибегут чекисты и сервер конфискуют? Да кому Вы нужны!
Разместите на сайте публичную аферту, типа такой

7.1. “Хостинг Картинок” И ЕГО СЕРВИСЫ, ВКЛЮЧАЯ ВСЕ СКРИПТЫ, КОНТЕНТ И ОФОРМЛЕНИЕ ПОСТАВЛЯЮТСЯ <КАК ЕСТЬ>. АДМИНИСТРАЦИЯ ОТКАЗЫВАЕТСЯ ОТ ВСЯКИХ ГАРАНТИЙ ТОГО, ЧТО САЙТ “Хостинг Картинок” ИЛИ ЕГО СЕРВИСЫ МОГУТ ПОДХОДИТЬ ИЛИ НЕ ПОДХОДИТЬ ДЛЯ КОНКРЕТНЫХ ЦЕЛЕЙ ИСПОЛЬЗОВАНИЯ. АДМИНИСТРАЦИЯ НЕ МОЖЕТ ГАРАНТИРОВАТЬ И НЕ ОБЕЩАЕТ НИКАКИХ СПЕЦИФИЧЕСКИХ РЕЗУЛЬТАТОВ ОТ ИСПОЛЬЗОВАНИЯ САЙТА И(ИЛИ) ЕГО СЕРВИСОВ.
7.2. ВО ИЗБЕЖАНИЕ НЕДОРАЗУМЕНИЙ ВАМ СЛЕДУЕТ СОБЛЮДАТЬ МЕРЫ ПРЕДОСТОРОЖНОСТИ В СКАЧИВАНИИ С САЙТА “Хостинг Картинок” ИЛИ ПО РАЗМЕЩЕННЫМ НА НЕМ ССЫЛКАМ, И ИСПОЛЬЗОВАНИИ ЛЮБЫХ ФАЙЛОВ. АДМИНИСТРАЦИЯ НАСТОЯТЕЛЬНО РЕКОМЕНДУЕТ ИСПОЛЬЗОВАТЬ ТОЛЬКО ЛИЦЕНЗИОННОЕ, В ТОМ ЧИСЛЕ АНТИВИРУСНОЕ, ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ.
7.3. ИСПОЛЬЗУЯ САЙТ “Хостинг Картинок”, ВЫ СОГЛАШАЕТЕСЬ С ТЕМ, ЧТО СКАЧИВАЕТЕ С САЙТА “Хостинг Картинок” ИЛИ С ЕГО ПОМОЩЬЮ ЛЮБЫЕ МАТЕРИАЛЫ НА СВОЙ СОБСТВЕННЫЙ РИСК И НЕСЕТЕ ЛИЧНУЮ ОТВЕТСТВЕННОСТЬ ЗА ВОЗМОЖНЫЕ ПОСЛЕДСТВИЯ ИСПОЛЬЗОВАНИЯ ВАМИ УКАЗАННЫХ МАТЕРИАЛОВ, В ТОМ ЧИСЛЕ ЗА УЩЕРБ, КОТОРЫЙ ЭТО МОЖЕТ ПРИЧИНИТЬ ВАШЕМУ КОМПЬЮТЕРУ ИЛИ ТРЕТЬИМ ЛИЦАМ, ЗА ПОТЕРЮ ДАННЫХ ИЛИ ЛЮБОЙ ДРУГОЙ ВРЕД, КОТОРЫЙ МОЖЕТ БЫТЬ ВЫЗВАН.
7.4. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АДМИНИСТРАЦИЯ САЙТА ИЛИ ЕЕ ПРЕДСТАВИТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТЬ ПЕРЕД ВАМИ ИЛИ ПЕРЕД ЛЮБЫМИ ТРЕТЬИМИ ЛИЦАМИ ЗА ЛЮБОЙ КОСВЕННЫЙ, СЛУЧАЙНЫЙ, НЕУМЫШЛЕННЫЙ УЩЕРБ, ВКЛЮЧАЯ УПУЩЕННУЮ ВЫГОДУ ИЛИ ПОТЕРЯННЫЕ ДАННЫЕ, ВРЕД ЧЕСТИ, ДОСТОИНСТВУ ИЛИ ДЕЛОВОЙ РЕПУТАЦИИ, ВЫЗВАННЫЙ В СВЯЗИ С ИСПОЛЬЗОВАНИЕМ САЙТА “Хостинг Картинок”, СОДЕРЖИМОГО САЙТА “Хостинг Картинок” ИЛИ ИНЫХ МАТЕРИАЛОВ, К КОТОРЫМ ВЫ ИЛИ ИНЫЕ ЛИЦА ПОЛУЧИЛИ ДОСТУП С ПОМОЩЬЮ САЙТА “Хостинг Картинок”, ДАЖЕ ЕСЛИ АДМИНИСТРАЦИЯ ПРЕДУПРЕЖДАЛА ИЛИ УКАЗЫВАЛА НА ВОЗМОЖНОСТЬ ТАКОГО ВРЕДА.



Офлайн

#8 Дек. 24, 2012 11:59:07

0xFF
Зарегистрирован: 2012-12-23
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Использование сессий для ограничения разрешения скачивания файла

FishHook
Да кому Вы нужны!

Ну играть в рулетку неохота

Офлайн

#9 Дек. 24, 2012 12:00:07

0xFF
Зарегистрирован: 2012-12-23
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Использование сессий для ограничения разрешения скачивания файла

Это уже юридическое решение проблемы, а нужно техническое

Офлайн

#10 Дек. 24, 2012 12:05:34

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Использование сессий для ограничения разрешения скачивания файла

С таким техническим решением, которое вы предлагаете, у Вас будет целых три пользователя - Вы, тестовый и случайный.



Офлайн

  • Начало
  • » Django
  • » Использование сессий для ограничения разрешения скачивания файла[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version