Управление правами безопасности на основе User.Current.Name в ASP.NET MVC - PullRequest
0 голосов
/ 04 октября 2009

Я использую ASP.NET MVC для создания веб-приложения. На главном экране вошедшего в систему пользователя я использую User.Current.Name для определения идентификатора вошедшего в систему пользователя, это сопоставляется с идентификатором данных модели домена, которые связаны с текущим пользователем. Никто другой не может видеть или редактировать эту информацию (например, его профиль).

Я использую членство и роли, чтобы гарантировать, что только авторизованные пользователи с определенной ролью могут вызывать это действие (в данном случае действие HomeController)

Там будет не HTTPS для этого приложения, когда оно развернуто.

Считается ли этот подход безопасным? Есть ли у злоумышленника возможность подделать свою личность, чтобы гарантировать, что User.Current.Name возвращает другое имя? Требуется ли какая-либо дополнительная настройка, чтобы никто не мог «украсть» cookie-файл аутентификации другого пользователя?

РЕДАКТИРОВАТЬ: используется стандартная проверка подлинности форм.

Ответы [ 2 ]

4 голосов
/ 05 октября 2009

ОК, поэтому, отложив HTTP сниффинг в сторону, потому что вы не будете использовать SSL, основной проблемой является файл cookie аутентификации.

Файл cookie для проверки подлинности / ролей форм по умолчанию не шифруется, он подписывается только против взлома. Вы можете зашифровать его, используя

<forms protection="All" ... />

Для шифрования будет использоваться машинный ключ, указанный в machine.config или web.config - так что если вы хотите, чтобы куки пересекались с повторными циклами приложения, вам нужно будет установить определенный машинный ключ .

Вам также следует обратить внимание на не сохраняющиеся файлы cookie (т. Е. Без опции «Запомнить меня») и убедиться, что защищенные страницы, требующие аутентифицированного доступа, размещаются в подкаталогах / контроллерах, которые отделены от анонимно доступных страниц.

Возможно, вы также захотите сократить срок действия куки, что может сократить время жизни украденного куки.

<forms 
    timeout="10" 
    slidingExpiration="true"... />

Вам также следует кодировать весь вывод на веб-страницы, чтобы остановить межсайтовый скриптинг, поскольку это основной способ кражи файлов cookie. Файл cookie ASP.NET доступен только по протоколу HTTP, что означает, что он не должен обслуживаться через javascript, однако не все браузеры реализуют это (Safari этого не делает).

0 голосов
/ 04 октября 2009

Пока вы установили свойство machineKey в web.conrfig, cookie шифруется на стороне сервера, и никто не может подделать эту информацию. Однако, поскольку стандартным механизмом проверки подлинности в ASP.net MVC является обычная проверка подлинности с помощью форм, необходимо включить SSL, чтобы никто не мог прослушать имя пользователя и пароль при входе в систему.

Другой подход заключается в использовании другого механизма аутентификации. Это может быть проверка подлинности Windows, Kerberos, использование клиентских сертификатов и т. Д.

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