2010-07-28 5 views
0

У меня есть приложение SL, где я должен реализовать подсистему управления файлами. У меня иерархическая структура файлов \ folders (просто описание). Также каждый файл \ папка имеет собственные разрешения для пользователей \ групп. Я бы хотел, чтобы один пользователь, у которого есть разрешение на загрузку файла, не мог передать его другому пользователю, у которого нет этого разрешения. Поэтому, если у пользователя есть разрешение на загрузку, он получает ссылку www.site.com/file.rar и загружает его. Но он мог дать эту ссылку другому человеку без разрешения. Какой алогорифм более подходит в этом случае? Любая помощь будет оценена по достоинству.Защитить ссылку для общедоступных загрузок

ответ

2

Веб-сервер должен быть ответственным и обеспечить аутентификацию и авторизацию для любых файловых запросов. Это не относится к Silverlight, поскольку это общая проблема.

Ваш веб-сервер должен проверить каждый запрос на загрузку файла в отношении текущего пользователя (который, если вы используете ASP.NET, может использовать один из методов проверки подлинности, таких как Forms Auth или Windows Auth, например). Например, у вас может быть обработчик HTTP, который выполняет эту проверку и позволяет загружать (и предоставляет байты загружаемого файла). Here's более старый пример, но похоже, что он все еще применим для ASP.NET, например.

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

Я бы пошел с первым предложением, поскольку он более надежный и простой в управлении и управлении (игнорируя особенности технологии, поскольку этот шаблон доступен на всех веб-платформах).

0

Вы можете хранить информацию о разрешении в базе данных. Тогда каждый пользователь будет иметь свой собственный аккаунт и набор разрешений. Затем вы можете установить разрешения групп пользователей для групп файлов или отдельных файлов.

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

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

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

Я надеюсь, что это помогает, это не было непосредственно SilverLight ответ, но более от языка

Смежные вопросы