2016-05-26 7 views
2

В моем приложении ASP.Net MVC я хочу разрешить определенной группе пользователей доступ к странице, где они могут загрузить файл. Обычно я просил бы эту группу пользователей получить доступ к странице с загрузкой через логин (имя пользователя и пароль) и аутентификацию их учетных данных. Тем не менее, эта группа пользователей жалуется на количество данных для входа в систему для нескольких других веб-систем и на самом деле не хочет запоминать другой набор данных для входа. Поэтому я подумывал передать пользователю URL-адрес, содержащий GUID, надеясь, что это будет очень маловероятно, чтобы кто-нибудь догадался. Например:Использование GUID в Querystring для обеспечения безопасности

http://www.example.com/admin/93017B0C-D548-40CA-A7B0-D4DA707ABE4C

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

Заранее спасибо.

ответ

2

См. this answer и GUID RFC для получения информации о безопасности самих GUID.

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

То есть, идентификаторы GUID уникальны, но они не являются непредсказуемыми, что делает их непригодными для этого использования. Используйте CSPRNG для генерации 128-разрядного случайного токена.

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

Кроме того, рекомендуется https, чтобы гарантировать, что путь не может быть перехвачен при переходе.

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

Моя рекомендация - использовать настоящую аутентификацию и поощрять пользователей использовать диспетчер паролей.