Как запретить другим пользователям загружать / открывать файлы других пользователей? - PullRequest
2 голосов
/ 05 октября 2010

Я создаю небольшой веб-сайт для размещения файлов, и каждый пользователь может загружать несколько файлов, и он будет иметь доступ только к своим файлам и не сможет получить доступ к другим файлам, например, угадав URL.
Есть ли способ обезопасить файлы, чтобы иметь доступ только у владельца и никто другой "может быть администратор сайта тоже будет иметь доступ"

Обновите , если вы можете показать мне пример, пример кода или демо, которое будет здорово.

Ответы [ 3 ]

5 голосов
/ 05 октября 2010

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

2 голосов
/ 05 октября 2010

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

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

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

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

Один из распространенных способов реализовать это - хранить файлы в базе данных в виде двоичных данных.Не беспокойтесь о том, что ваша база данных станет слишком большой, если вы используете SQL Server.Двоичные поля не хранятся в самих таблицах данных, поэтому они не влияют на производительность.Это позволит вам очень быстро найти файлы, к которым у вошедшего в систему пользователя есть доступ, используя быстрые соединения с базой данных.Затем выведите данные в поток ответов, когда пользователь запрашивает определенный файл (после очередной проверки, конечно, вы не можете быть слишком осторожны).

1 голос
/ 05 октября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...