Пользователь ASP.NET входит в лучшие практики

Вы можете использовать этот embed.plnkr.co , его использование полностью для этой проблемы.

9
задан Cœur 9 April 2017 в 09:50
поделиться

7 ответов

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

Я использую аутентификацию форм. Я получаю пароль, защищенный с ssl через текстовое поле на странице входа в систему. Я беру тот пароль и хеширую его. (Хеширование похоже на один путь шифрование, можно получить хэш-код что наклон быть повернутыми назад к паролю). Я беру тот хеш и выдерживаю сравнение, он пользователям хеширует в базе данных. Если соответствие хеша, я использую asp.nets, созданный в обработке аутентификации, которая обрабатывает cookie для меня.

Класс FormsAuthentication имеет методы в наличии, чтобы сделать этот fo Вы, такой как SetAuthCookie и RedirectFromLogin., они установят cookie и отметят их, как аутентифицируется. Cookie, который использует asp.net, шифруется. Я не могу говорить за его уровень безопасности хотя, но его в довольно общем использовании.

В моем классе я делаю проверку пароля и использую formsauth для обработки остальных:

if(SecurityHelper.LoginUser(txtUsername.Text, txtPassword.Text))
{    
    FormsAuthentication.RedirectFromLoginPage(txtUsername.Text, true);
}
5
ответ дан 4 December 2019 в 21:13
поделиться

Можно реализовать собственного поставщика членства, использующего инфраструктуру ASP.NET, видеть документы MSDN для класса MemberShipProvider.

2
ответ дан 4 December 2019 в 21:13
поделиться

Созданный в поставщике работает хорошо. Это действительно на самом деле работает с MySQL, хотя я нашел, что это не было столь же прямым как версия SQL MS. Если можно использовать, затем делают, это сохранит Вас часы работы.

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

2
ответ дан 4 December 2019 в 21:13
поделиться

Соление является практикой добавления unqiue строки символов к тому, что хешируется. Предположим mySalt = abc123 и мой пароль passwd. В PHP я использовал бы hashResult = md5(mySalt + password).

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

2
ответ дан 4 December 2019 в 21:13
поделиться

Можно использовать созданный в поставщике членства SQL - и Вы могли настроить специализированную "пользовательскую базу данных" доступа, если Вы не хотите таблицы членства в.NET в своей базе данных - просто указывают это в строке подключения.

Преимущество с моделью поставщика на прикладном уровне, код независим, из какого конкретного хранилища аутентификации Вы использовали.

Существует хорошая серия tutirials на сайте asp.net:

текст ссылки

1
ответ дан 4 December 2019 в 21:13
поделиться

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

-1
ответ дан 4 December 2019 в 21:13
поделиться

Недостаток Поставщика Членства Microsoft - то, что Вы не можете использовать ее в домене управляемый подход. Если Вы хотите, можно создать собственный пользовательский объект с собственным хэшем пароля и все еще использовать cookie аутентификации, обеспеченные Microsoft. Используя эти cookie аутентификации означают, что Вы не должны управлять идентификаторами сессии сами.

public void SignIn(User user)
        {
            FormsAuthentication.SignOut();
           var ticket = new FormsAuthenticationTicket(1, user.UserName, DateTime.Now.AddMinutes(30), expires, alse, null);
            var encryptedTicket = FormsAuthentication.Encrypt(ticket);
            var authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket)
            {
                Expires = ticket.Expiration
            };

            httpContextProvider.GetCurrentHttpContext().Response.Cookies.Add(authCookie);
        }

    public void SignOut()
    {
        FormsAuthentication.SignOut();
    }

Я использую свой собственный пользовательский объект и таблицы. Я храню свои пароли, хешированные в usertable с уникальной солью на пользователя. Это безопасно, легко реализовать, и это поместится в Ваш дизайн. Ваша таблица базы данных не будет загрязнена дерьмом поставщика членства в Microsofts.

-1
ответ дан 4 December 2019 в 21:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: