Насколько сильным является User.Identity.Name? - PullRequest
2 голосов
/ 12 мая 2009

Я пишу приложение ASP.Net MVC, которое использует проверку подлинности NTLM, поэтому пользователям не нужно регистрироваться на сайте. Если у меня отключен анонимный доступ, могу ли я использовать User.Identity.Name в качестве ключа владения в базе данных. То, что я хотел бы сделать, это иметь возможность выполнять поиск, такой как

from station in db.stations where station.user == username select *;

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

1 Ответ

4 голосов
/ 12 мая 2009

Имя заполняется из сеанса, поэтому злоумышленнику придется подделать cookie сеанса, чтобы перехватить сеанс пользователя и получить доступ. Cookie-файл сеанса ASP.NET зашифрован, чтобы предотвратить это, но у вас обязательно должен быть срок окончания сеанса, чтобы решительный злоумышленник не мог тратить неограниченное время, пытаясь сломать шифрование. Установка для файлов cookie httpOnly также может помочь предотвратить доступ cookie к вредоносному скрипту в браузере.

Вот справочник с рекомендациями по обеспечению безопасности веб-сайта ASP.NET 2.0. Многое из этого по-прежнему применимо, но может потребоваться перевод на MVC.

...