Существует ли другой способ проверки подлинности на основе форм ASP.Net, который уже создан и проверен? - PullRequest
4 голосов
/ 20 сентября 2010

Как и многие люди, я использовал аутентификацию ASP.Net Forms, потому что она уже написана, и, как нам говорят, мы пишем собственный код безопасности, как правило, плохая идея.

С текущими проблемами с ASP.Net Я думаю, что сейчас самое время посмотреть на альтернативы.

Из того, что я понимаю, Microsoft склонна хранить вещи на стороне клиента, потому что это облегчаетработать через фермы серверов без необходимости обращения к базе данных.

Хотя мне не особо важны серверные фермы, и я хотел бы просто иметь непрозрачный файл cookie, который демонстрирует мое недоверие к вызывающим абонентам.

Есть ли достойное решение, которое ужебыло доказано твердое?

Обновление: , чтобы уточнить мой вопрос.Я говорю об аутентификационной части аутентификации форм, которую я хотел бы заменить.Бэкэнд довольно легко заменить, вы можете легко реализовать интерфейсы для хранения ваших пользователей и ролей.Вы также можете использовать существующие библиотеки, такие как http://www.memberprotect.net/, которые были упомянуты здесь.

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

Ответы [ 4 ]

4 голосов
/ 26 сентября 2010

Я работал над HttpModule, который в основном делает то, что вы ищете. Когда генерируются FormsAuthenticationCookie и FormsAuthenticatedTicket, перед отправкой ответа клиенту (т. Е. Во время обработки обратной передачи страницы / действия входа в систему) все подробности о cookie-файле и билете сохраняются на сервере. Кроме того, UserData из заявки перемещается на сервер (если есть) и заменяется соленым хешем SHA-512 других свойств в заявке вместе с GUID, который служит ключом в хранилище заявки на стороне сервера. ,

Проверка файлов cookie и билетов сравнивает все данные, предоставленные клиентом (возможно, включая их IP-адрес), со всеми свойствами, которые были известны о них на момент их выдачи. Если что-то не совпадает, они удаляются из запроса до того, как модуль FormsAuthenticationModule даже запускается. Если все совпадает, пользовательские данные сервера возвращаются в FormsAuthTicket на случай, если у вас есть какие-либо модули или код, которые зависят от него. Это все прозрачно. Кроме того, он может обнаруживать подозрительные и явно злонамеренные запросы и вставляет случайную задержку в обработку. Там также есть некоторые явные обходные пути оракула.

Демонстрационное приложение фактически позволяет вам создавать / изменять значения файлов cookie и билетов на сервере, при этом сервер шифрует ваш билет для вас с помощью ключей машины. Таким образом, вы можете доказать себе, что вы не можете создать тикет / cookie-файл, который обходит проверку сервера, если вы не записали точный набор данных на сервер (что должно быть невозможно при нормальных обстоятельствах).

-Скотт

1 голос
/ 22 сентября 2010

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

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

Что касается видео, в котором они получают ключи с помощью инструмента, то это против установки с помощью dotnetnuke.По умолчанию dotnetnuke имеет эти ключи в web.config.

Реализуйте обходной путь, держите ключи вне уровня вашего сайта web.config, если вы не используете webresource.axd и scriptresource.axd отключите эти обработчикии примените патч, как только MS выпустит его.

0 голосов
/ 20 сентября 2010

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

Из того, что я понимаю, Microsoft склонна хранить вещи на стороне клиента, потому что это облегчает работу на фермах серверов без необходимости базы данныхвызовы доступа.

Что это за уязвимость, которая заставляет вас думать, что аутентификация ASP.NET форм нарушена не больше, чем другое решение?

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

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

Относительно токенов / сессий: вы должны отправить что-то клиенту, чтобы аутентификация работала(называете ли вы это токеном или нет), и это не та часть процесса, которая вызывает текущую проблему безопасности: именно то, как сервер отвечает на определенные вызовы, делает этот секрет уязвимым для атаки.

0 голосов
/ 20 сентября 2010

Я просто порекомендую взглянуть на продукт MemberProtect InetSolution, это компонент, разработанный с учетом требований безопасности для отраслей банковских и финансовых услуг, но широко применимый к любому сайту, созданному на ASP.NET, или приложению, построенному на основе. Чистая платформа. Он обеспечивает поддержку шифрования пользовательской информации и множества методов аутентификации от упрощенного до очень продвинутого, а различные методы и функции предназначены для использования по усмотрению разработчика, поэтому это не консервативное решение, а очень гибкий Во-первых, это может или не может быть хорошей вещью в зависимости от конкретной ситуации. Это также очень прочная основа для создания новых сайтов и приложений на основе членства в целом.

Подробнее об этом можно узнать на http://www.memberprotect.net

Я разработчик для MemberProtect и работаю в InetSolution:)

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