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

Для связи со мной:
@IvanReshet
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
К слову, почему за последнюю неделю делаю мало постов)) Но сегодня ждите интересную тему)
😁3🐳1
ЗАДАЧА:
На вход подается число в диапазоне [-2³¹;2³¹-1]. Нужно вернуть целое число, перевернув цифры в обратном порядке с сохранением знака(+/-). Если результат выходит за указанный диапазон, вернуть 0. (решение оставляем в комментарии)

Пример 1:
INPUT: x = 123456
OUTPUT: 654321

Пример 2:
INPUT: -5670
OUTPUT: -765

Пример 3:
INPUT: -2 147 483 648
OUTPUT: 0
Всем привет.
Как прошли выходные?
На этой неделе будем говорить про авторизацию и аутентификацию в веб.
🔥6👍1
Всем привет.
Давайте, для начала, разберемся в понятиях аутентификации, авторизации и идентификации.

1. Идентификация: Этот процесс определяет, кем пользователь является. Например, когда вы вводите свое имя пользователя на сайте.

2. Аутентификация: Этот процесс проверяет подлинность пользователя. Например, после того как вы ввели свое имя пользователя на сайте, вам может потребоваться ввести пароль для подтверждения вашей личности.

3. Авторизация: Этот процесс определяет, к каким ресурсам или функциям приложения пользователь имеет доступ. Например, после успешной аутентификации вы можете получить доступ к своему личному кабинету на сайте, но не иметь доступа к административным функциям.

Итак, чтобы сделать пример более ясным, предположим, что вы заходите на сайт (идентификация), вводите свой логин и пароль (аутентификация), и после этого получаете доступ к своему аккаунту с возможностью просмотра информации о заказах, но не имеете права редактировать их (авторизация).
👍5🔥1
Всем привет.
Сегодня более подробно разговариваем про аутентификацию.
Будет много инфы, готовьтесь😅
👍4
Типы аутентификации:
- по паролю
- 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