Аутентикация/Авторизация для сайта/сервиса

123 4
S3
На сайте с 29.03.2012
Offline
348
585

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

Расскажу, как это планирую сделать я.
Аутентикация для начала самая простая - логин/пароль. Пароль хранится в базе в хэшированном виде, тут вроде все надежно и просто. При необходимости в дальнейшем можно прикрутить капчу, third-party, csrf-token etc. Пока это за рамками вопроса. Интересует дальнейшая авторизация.
Когда пользователь залогинен, для него создается jwt-token, закрытый  алгоритмом RSA256 и который содержит необходимые данные/права пользователя. 
Есть открытые страницы, которые доступны без токена. А есть те, которые можно посмотреть исключительно имея права. Токен лежит в куках и при запросе определенных страниц каждый раз проверяются права пользователя через декодер и страница загрузится, только если у юзера есть на это права.
Главный вопрос - насктолько это надежно? В случае работы апишки - все в порядке, там без токена не будет доступа к данным. А вот на фронте как?  Можно ли как то подменить токен и получить данные не своего пользователя? На что обращать внимание? 
Какие способы реализованы у вас? 

Mik Foxi
На сайте с 02.03.2011
Offline
1177
#1
привяжи авторизацию к ip.
Антибот, антиспам, веб фаервол, защита от накрутки поведенческих: https://antibot.cloud/ (Зеркало: https://антибот.рф/ ) Форум на замену серчу: https://foxi.biz/
Mik Foxi
На сайте с 02.03.2011
Offline
1177
#2
срок жизни сессии еще, сутки и протухает пусть.
S3
На сайте с 29.03.2012
Offline
348
#3
Mik Foxi #:
привяжи авторизацию к ip.

Хорошая идея, спасибо. 

Mik Foxi #:
срок жизни сессии еще, сутки и протухает пусть.

Это само собой, даже меньше у меня будет. Активная сессия - не более получаса. Посмотрим

S3
На сайте с 29.03.2012
Offline
348
#4
Доработал версию, поковырял - ну вроде все работает как ожидается. Отдельно нужно еще токеном апишку закрыть, сейчас она открыта. Кстати, если тут есть уважающие себя хакеры, могу через пару дней дать доступ, можете попробовать поломать, может найдете дыры)))
Mik Foxi
На сайте с 02.03.2011
Offline
1177
#5
Sly32 #:
могу через пару дней дать доступ, можете попробовать поломать, может найдете дыры)))

так а денег то сколько дашь? уважающие себя хакеры бесплатно не работают.

P
На сайте с 26.04.2010
Online
396
#6
Sly32 #:
Кстати, если тут есть уважающие себя хакеры, могу через пару дней дать доступ, можете попробовать поломать, может найдете дыры)))

Если сайт под РФ, "взломает" его закон, что авторизоваться и регистрироваться можно только через российские сервисы (я.почта, госуслуги).

В 2024-м создавать сайты с регистрацией - так себе идея.

ArbNet
На сайте с 27.10.2019
Offline
139
#7
Sly32 #:
Хорошая идея, спасибо. 

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

Sly32 #:
Это само собой, даже меньше у меня будет.

Это тоже плохо, вы заставляете пользователя постоянно авторизоваться..

Sly32 #:
Кстати, если тут есть уважающие себя хакеры, могу через пару дней дать доступ, можете попробовать поломать, может найдете дыры)))

На уязвимости легко и самому проверить, есть несколько лазеек через которые хакеры получают доступ(XSS уязвимость, SQL-injection, CSRF, Code Injection), но они должны быть учтены на стадии разработки.

Sly32 :
Когда пользователь залогинен, для него создается jwt-token, закрытый  алгоритмом RSA256 и который содержит необходимые данные/права пользователя. 
Есть открытые страницы, которые доступны без токена. А есть те, которые можно посмотреть исключительно имея права. Токен лежит в куках и при запросе определенных страниц каждый раз проверяются права пользователя через декодер и страница загрузится, только если у юзера есть на это права.
Главный вопрос - насктолько это надежно?

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

E
На сайте с 01.10.2017
Offline
115
#8
Sly32 :
который содержит необходимые данные/права пользователя

Даже при использовании JWT обычно нет необходимости хранить данные прямо в токене. Достаточно идентификатора пользователя. Если не хотите его "опубличивать" (здесь речь уже не про JWT), можете "солить" в индивидуальном порядке и динамически менять соль между сеансами.

С IP могут быть определенные проблемы. Иногда встречаются провайдеры, которые могут менять IP в течение одного (по крайней мере с точки зрения пользователя) Интернет-сеанса. Не знаю, с чем это связано. Плохая связь или что-то другое.

Sly32 #:
Это само собой, даже меньше у меня будет. Активная сессия - не более получаса.

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

Домены на продажу: https://p20.ru/collection/domains-for-sale
E
На сайте с 01.10.2017
Offline
115
#9
ArbNet #:
так делают только начинающие, которые потом сталкиваются с ограничением доступа к сайту с разных устройств.

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

ArbNet #:
Это тоже плохо, вы заставляете пользователя постоянно авторизоваться.

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

Можно использовать код "возобновления сеанса". Как с недавних пор делает Сбербанк.

S3
На сайте с 29.03.2012
Offline
348
#10
ArbNet #:
Плохая идея, так делают только начинающие, которые потом сталкиваются с ограничением доступа к сайту с разных устройств..

Перечитай внимательно. IP проверяется во время создания токена и живет ровно столько же сколько и сессия. Даже получив токен, ты не пройдешь верификацию с другого устройства. А зарегистрированный пользователь может войти откуда угодно. Если ты дома войдешь через домашний инет - окей, если тут же захочешь войти с мобилки - для тебя на устройстве создастся новый токен. Подумаю кстати о хранении сессий, чтобы пользователь мог контролировать входы в свой акк.

ArbNet #:
Это тоже плохо, вы заставляете пользователя постоянно авторизоваться..

Это основы безопасности. Даже для минимума сенситив информации, которая может храниться. Например переписка. Человек отошел от компа, забыв вылогиниться, кто-то пришел, и увидел открытый аккаунт. На одном из проектов у нас было служебное требование - токен живет не более 15 минут. Тут приходится лавировать - удобство или безопасность.

ArbNet #:
XSS уязвимость, SQL-injection, CSRF, Code Injection

Я немного не про это. Естественно будет и CORS и CSRF токен на фронте. Понятно, что иньекцию в базу сделать невозможно изначально - первое что проверялось. Никакой SQL/js скрипт не выполнится, если попытаться закинуть его в форму. JS обфусцируется. База - за 7 замками. К ней в принципе не будет доступа извне, сейчас, конечно открыта  для девелопинга, но даже сейчас ты в жизни в нее не войдешь - доступ через PEM-сертификат.

ArbNet #:
Не надёжно, есть способы получить куки. Всю информацию лучше хранить в сессии на сервере, а в куках только хэш токена для создания новой сессии, чтобы при новом заходе человек постоянно не авторизовался.

Вот об этом можем поподробнее поговорить. Как я уже говорил - в этом я не силен. Да, токен лежит в куках, его можно увидеть. И что это даст? как ты этим можешь воспользоваться? Там есть только userID/username и права юзера. Что это тебе даст?
Про хеш, извини не понял, можешь обьяснить?

Mik Foxi #:
так а денег то сколько дашь? уважающие себя хакеры бесплатно не работают.

А сколько хочешь? Можем договориться, если ты такой меркантильный))) Находишь дыру - плачу) Причем чем быстрее - тем больше)

plab #:
Если сайт под РФ

Не планируется под РФ вообще. Под русскоязычную аудиторию - да, в том числе.

plab #:
В 2024-м создавать сайты с регистрацией - так себе идея.

В очередной раз - я не занимаюсь сайтами. Это сервис по поиску клиентов. Веб-сервис, андроид и айфон приложения. Поэтому сразу и пишется через АПИ, на Пайтон и Java

123 4

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий