Аутентификация бедного человека - PullRequest
1 голос
/ 05 февраля 2010

Я занимаюсь разработкой веб-сайта ASP.NET для небольшого бизнеса. Сайт нуждается в защищенной паролем области, где владелец сайта будет управлять контентом сайта. Для остального мира сайт полностью доступен только для чтения.

Я разработал и реализовал следующую схему:

  • Пользователь хочет получить доступ к защищенной странице.
  • Каждая защищенная страница наследует главную страницу «AdminIface», которая изменяет пользовательский интерфейс, чтобы пользователь знал, что он находится на защищенной странице, и проверяет файл cookie безопасности. Если нет cookie или неправильный cookie: перенаправьте на auth.aspx.
  • Auth.aspx генерирует большое случайное число с помощью RNGCryptoServiceProvider, а затем отправляет его клиенту + форма пароля.
  • Пользователь вводит пароль.
  • Клиентский JavaScript объединяет случайное начальное число + пароль, вычисляет MD5 полученной строки и отправляет MD5 на сервер.
  • Сервер сравнивает случайное начальное число со значением, удерживаемым сеансом, если все в порядке, он комбинирует случайное начальное число + пароль, вычисляет MD5, сравнивает MD5.
  • Если контрольная сумма совпадает - сервер генерирует еще одно большое случайное число, которое будет использоваться в качестве файла cookie безопасности.
  • Сервер сохраняет cookie-файл безопасности в объекте Session и отправляет cookie клиенту, который теперь считается авторизованным.

Правильный пароль хранится в виде строковой константы в источнике auth.aspx.

Эта схема в порядке?

P.S. Я знаю, что AD + Kerberos намного лучше, но на общем хостинге Godaddy у меня нет никаких привилегий даже на создание еще одного приложения.

Ответы [ 6 ]

4 голосов
/ 05 февраля 2010

Я бы просто жестко запрограммировал аутентификацию пользователя в web.config. Это означает, что вы все еще можете использовать элементы управления Членством. Действительно хороший пример можно увидеть здесь . База данных не требуется, ни членство поставщика. Если у вас есть один пользователь (или очень мало пользователей), то это довольно хороший вариант.

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

Казалось бы, это гораздо более простое решение, чем вы реализовали.

2 голосов
/ 05 февраля 2010

Звучит нормально. Стандартные вещи HMAC. Однако ваши слабые стороны:

  1. Применение: использование javascript и сессий
  2. Безопасность: использование новой кодовой базы

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

1 голос
/ 05 февраля 2010

Многие умные люди (а именно инженеры-программисты, создавшие WEP) пытались и не смогли создать свои собственные механизмы аутентификации безопасности, но потерпели неудачу. Возможности для взлома вашей собственной «пользовательской» аутентификации безопасности безграничны (без обид, но это чрезвычайно трудная проблема даже для специалистов по безопасности).

Я думаю, что лучше всего использовать что-то, что проверено , например метод аутентификации на основе SSL-сертификата.

1 голос
/ 05 февраля 2010

Ммм, почему бы не http://en.wikipedia.org/wiki/Basic_access_authentication с https (или даже без)?

- Каков реальный сценарий угрозы?

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

0 голосов
/ 05 февраля 2010

Как уже упоминалось, почему бы просто не использовать проверку подлинности с помощью SSL-сертификата - ее очень легко настроить (особенно для одного пользователя), и вы знаете, что она была проверена ... Вы не знаете, что у вас потенциально пропущено.

0 голосов
/ 05 февраля 2010

Что не так с TLS / SSL? Это обеспечит множество преимуществ, наименьшим из которых является некоторый поток аутентификации site-> user.

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