Под капотом стандартная проверка подлинности на основе форм ASP.NET в основном работает так же, как вы описываете. Отсутствие безопасности происходит главным образом из-за того, что вы, по сути, говорите ASP.NET: «Эй, не волнуйся ... Я справлюсь с этим». Взяв на себя опасные задачи, вы развертываете веревку, с помощью которой вы повеситесь (*). Microsoft вложила годы рабочей силы в структуру ASP.NET, и у нее есть довольно надежная встроенная система безопасности. Вы должны использовать это.
Аристос лает не на то дерево ... если кто-то может украсть «один простой cookie» у вашего пользователя / сайта, то он также может нарушить модель безопасности ASP.NET по умолчанию. Хотя это определенно вызывает озабоченность, на самом деле это не проблема.
* Например, допустим, вы создали «защищенный» объект Page с именем MySecurePage, который всегда проверяет, вошел ли пользователь и проверен ли он перед выполнением кода. Итак, однажды приходит разработчик Джо и забывает использовать MySecurePage, а вместо этого использует Page. К сожалению, вы только что устранили всю безопасность на этой странице. Это простой пример, но, надеюсь, вы получите представление о том, сколько существует разных способов это испортить.