ASP.NET Identity чрезвычайно сложна и перегружена для того, что мне нужно в приложении ASP.NET MVC 5. Хранение вещей - это хороший принцип ИМХО.Очень простая аутентификация с использованием сеанса в asp.net MVC - это безопасно?
Когда пользователь входит в систему, я просто использую Dapper для поиска по электронной почте & пароля в базе данных (хеширование &).
Затем я установил сеанс ["userID"] = user.Id // из базы данных.
Этот идентификатор представляет собой строку с высокой энтропией, генерируемую случайным образом (то есть штамп безопасности, который может быть отменен, а не фактический идентификатор пользователя), а таймаут сеанса установлен на длительное время - например, на 1 месяц - поэтому пользователи не должны вести регистрацию.
Если пользователь является администратором, я также просто установил Session ["admin"] = true;
Я затем создать простой класс, который наследуется от AuthorizeAttribute:
public class MyAuthorizeAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (httpContext.Session["userID"] == null)
return false;
else
return true;
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result = new RedirectResult("~/Account/Login");
}
}
так что я могу использовать атрибуты авторизации на моих контроллерах:
[MyAuthorize]
public ActionResult MyController()
{
...
}
Является ли это безопасно? Есть ли какие-то шаги, которые мне не хватает, чтобы защитить это - если да, то что?
Что-то не так с этим, что он не работает?
Сессия способна это сделать? Если не то, что будет &, то какой будет лучший способ (это так же просто)?
Именно поэтому вы даже не пытаетесь написать свою собственную вещь. Если ваш сайт окажется в дикой природе и используется людьми, то не рискуйте своими данными. Идентификация может показаться излишней, но она работает и защищена. Это уже доказано в дикой природе. Твоих вещей нет. –
Я бы сказал, что что-то настолько сложное, вероятно, будет иметь множество проблем в дикой природе (если не по своей сути, в их реализации), особенно когда MS постоянно меняет, как это работает. Если есть одна вещь, которая небезопасна, это сложность. Можете ли вы решить какие-либо конкретные проблемы в приведенном выше? – niico
@niico Есть ли у вас какие-либо ссылки, говорящие, что Identity не является безопасным? – trailmax