Программист практик | уроки программирования | подготовка к собеседованию
133 subscribers
126 photos
3 videos
1 file
21 links
разбор собесов, ответы на вопросы, решение задач

Для связи со мной:
@IvanReshet
Download Telegram
Типы аутентификации:
- по паролю
- HTTP auth
- Basic
- Digest
- NTLM
- Negotiate
- Forms auth
- по одноразовому паролю
- по сертификатам
- SSL/TLS
- по ключам доступа
- по токенам
- JWT
- SWT
- SAML
- WS-Trust
- WS-Federation
- OAuth
- OpenID Connect
Аутентификация по паролю - пользователь предоставляет username и password.
Существует несколько стандартных схем данного типа аутентификации:

1) Basic - username и password передаются в заголовке Authorization в виде base64-encoded (является сравнительно безопасным способом
только при использовании HTTPS)

2) Digest - сервер передает уникальное значение nonce,
а браузер передает MD5 хэш пароля пользователя, вычесленный с использованиемданного nonce (более защищена при использовании http,
но уязвима перед атакой с заменой схемы на basic и неподдерживает использование современных хэш-функций
для хранения пароля пользователя на сервере).

3) NTLM - пароль не передается в чистом виде. В основном используется
в Active Directory.

4) Negotive - позволяет клиенту выбрать между NTLM и Kerberos аутентификацией.
Может функционировать, только если и клиент, и сервер находятся в зоне intranet и являются частью домена Windows.
👍7
Всем привет.
Сегодня продолжаем разбирать аутентификацию.
4
Аутентификация по одноразовым паролям - обычно используется в дополнении к аутентификации по паролю при реализации двух факторной аутентификации (2FA).
При данном способе пользователь предоставляет данные двух типов: то, что он знает(пароль) и чем он владеет( телефон, электронный ключ и т.д.).
Также данный тип аутентификации используется при переводе денег или изменении настроек.

Разберём какие есть источники для создания одноразового пароля:

- использование токенов, генерирующих пароль по секретному ключу, хранящемуся на сервере и текущему времени.
Например RSA SecurID, Google authenticator.

- случайно генерируемые коды, передаваемые по sms.

- распечатка со списком заранее сформированных паролей. При каждом новом входе необходимо вводить новый пароль.

Обычно данный тип аутентификации расширяет Forms auth. После Ворда пароля создаётся сессия, но в рамках данной сессии пользователь не будет иметь доступ к приложению пока не произведет доп. аутентификацию по одноразовом у паролю.
🔥4💊1
Коллеги, всем привет. Возвращаюсь после небольшого перерыва. Впереди ещё много всего интересного)
🔥7
Продолжим говорить про аутентификацию. На очереди JWT.

JWT (JSON Web Token) - это стандарт для передачи информации между двумя сторонами в виде JSON объекта. JWT токены состоят из трех частей: заголовка (header), полезной нагрузки (payload) и подписи (signature).

1. Заголовок (header) содержит информацию о типе токена и используемом алгоритме шифрования.
2. Полезная нагрузка (payload) содержит данные, которые нужно передать между сторонами, например, идентификатор пользователя или другую информацию.
3. Подпись (signature) создается с использованием секретного ключа и позволяет проверить целостность токена.

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

1. Веб-приложение проверяет JWT-токен и если он верный, то выполняет действие от имени авторизованного пользователя.

2. Веб-приложение проверяет логин и пароль, и если они верны, то генерирует JWT-токен и отправляет его веб-браузеру.

3. Веб-браузер сохраняет JWT-токен и отправляет его вместе с каждым запросом в веб-приложение.

4. При генерации JWT-токена веб-приложение ставит подпись секретным ключом, который хранится только в веб-приложении.

5. Веб-браузер отправляет запрос веб-приложению с логином и паролем.
4
Правильный ответ:
5 (2 4) 3 1.
2 и 4 происходят за один процесс.
👌3💩1🤡1
Структура авторизации JWT:

1. Пользователь вводит свои учетные данные (например, логин и пароль) на клиентской стороне.

2. Клиент отправляет запрос на сервер с учетными данными для аутентификации.

3. Сервер проверяет учетные данные и, если они верные, создает JWT (JSON Web Token) с уникальным идентификатором пользователя и другой информацией.

4. Сервер отправляет JWT обратно клиенту.

5. Клиент сохраняет JWT (обычно в localStorage или в памяти) для последующих запросов.

6. При каждом запросе к защищенным ресурсам, клиент отправляет JWT в заголовке Authorization.

7. Сервер проверяет подлинность JWT и, если токен действителен, разрешает доступ к защищенным ресурсам.

8. При истечении срока действия JWT, клиент должен повторно авторизоваться для получения нового токена.
❤‍🔥3
OAuth 2.0 - это протокол авторизации, который позволяет пользователям предоставлять доступ к своим данным на сторонних сайтах без необходимости передачи своих учетных данных (логин и пароль). Вместо этого, пользователь авторизует приложение на стороннем сайте через OAuth 2.0, чтобы приложение могло получить доступ к данным пользователя.

Процесс работы OAuth 2.0 выглядит примерно так: пользователь переходит на сторонний сайт, где требуется авторизация через OAuth 2.0. Пользователь вводит свои учетные данные на сайте, а затем сайт предоставляет ему токен доступа. Этот токен передается приложению, которое хочет получить доступ к данным пользователя. Приложение использует токен для запроса доступа к данным пользователя на стороннем сайте.

Примером такой авторизации может служить авторизация через Google или ВК.
🔥5👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Когда не совсем понял что такое наследование☝️

Всем привет.
На этой и следующей неделе тренируем SQL.
🤣4🔥2
Всем привет.
Повторяем теорию по SQL или сразу задачки?)
Anonymous Poll
80%
Сначала теория
20%
Сразу задачи
🔥5
Для начала давайте вспомним основные команды SQL для работы с данными.

1. SELECT - используется для выбора данных из базы данных.
Например:
SELECT * FROM table_name;
- выберет все данные из таблицы.

2. INSERT INTO - используется для добавления новых строк в таблицу.
Например:
INSERT INTO table_name (column1, column2) VALUES (value1, value2);
- добавит новую строку в таблицу с указанными значениями.

3. UPDATE - используется для обновления существующих записей в таблице.
Например:
UPDATE table_name SET column1 = value1 WHERE condition;
- обновит значение column1 в таблице, удовлетворяющем условию.

4. DELETE - используется для удаления записей из таблицы. Например:
DELETE FROM table_name WHERE condition;
- удалит записи из таблицы, удовлетворяющие условию.

5. WHERE - используется для фильтрации результатов по заданному условию.
Например:
SELECT * FROM table_name WHERE column1 = value;
- выберет только те строки, где column1 равен заданному значению.

6. JOIN - используется для объединения данных из двух и более таблиц на основе связанных столбцов.
Например:
SELECT * FROM table1 JOIN table2 ON table1.column = table2.column;
- объединит данные из двух таблиц на основе совпадения значений в столбцах.

7. GROUP BY - используется для группировки результатов по определенному столбцу.
Например:
SELECT column1, COUNT(*) FROM table_name GROUP BY column1;
- сгруппирует данные по значениям в столбце column1 и посчитает количество строк в каждой группе.

8. ORDER BY - используется для сортировки результатов по заданному столбцу.
Например:
SELECT * FROM table_name ORDER BY column1 DESC;
- отсортирует данные по столбцу column1 в порядке убывания.
🔥31👍1
Всем привет!
Вспоминаем работу с JOIN.
Сегодня начинаем практиковаться. Ждём задачки по SQL
👍6
Всем привет. Возвращаюсь после мини отпуска))
👍5🤣2
Начнем с простых задачек по SQL:
У вас есть таблица "Продукты" с полями "Название", "Цена" и "Количество".
Необходимо написать SQL запрос, который выведет названия продуктов, у которых цена выше средней цены по всем продуктам в таблице.
Свой вариант пишите в комментариях.
Напишите запрос, который удалит из бд всех авторов у которых нет ни одной книги.
Свой вариант пишите в комментариях.
Вечером разберём правильные ответы на эти задачи)
🔥4
Отлично. Решение задачек уже есть. Завтра накидаю новые)))
👍2
Напишите запрос, который выведет наименование всех книг, в написании которых принимали участие несколько авторов.
👍4
А вы используете тип UUID?

UUID (Universally Unique Identifier) - это тип данных, который используется для хранения уникальных идентификаторов в базах данных. UUID представляет собой 128-битное значение, которое гарантированно уникально в пределах всей системы.

UUID может быть применен в различных случаях:

1. Уникальные идентификаторы: UUID часто используется для создания уникальных идентификаторов для строк в таблицах баз данных. Это особенно полезно, когда необходимо генерировать уникальные идентификаторы без необходимости обращения к централизованному источнику уникальности.

2. Распределенные системы: При работе с распределенными системами, где несколько узлов должны создавать уникальные идентификаторы, UUID может быть использован для генерации уникальных значений без конфликтов.

3. Анонимность: UUID может быть использован для создания уникальных идентификаторов, не раскрывающих никакой конфиденциальной информации о пользователе или объекте.

4. Связывание данных: В некоторых случаях UUID может быть использован для связывания данных между различными таблицами или системами без необходимости использования первичных ключей.

В целом, UUID является удобным способом создания уникальных идентификаторов без необходимости централизованной координации. Однако, следует учитывать, что использование UUID может замедлить процессы индексации и поиска данных в базе данных из-за их уникальности и размера.
❤‍🔥4👍3