1. Аутентификация - процесс подтверждения личности пользователя. Например, пользователь вводит логин и пароль, а система проверяет его учётные данные. Авторизация — проверка того, разрешено ли этому пользователю выполнять определённое действие или обращаться к конкретному ресурсу. Аутентификация отвечает на вопрос «Кто пользователь?», а авторизация — «Что ему разрешено?». Проверка прав доступа должна выполняться на сервере.

 

2. Пароли нельзя хранить в открытом виде, поскольку при утечке базы данных злоумышленники смогут получить их непосредственно. Для защиты применяются специализированные адаптивные алгоритмы хеширования паролей с индивидуальной солью, например Argon2id, bcrypt или PBKDF2. При аутентификации система проверяет введённый пароль относительно сохранённого хеша. Дополнительным средством защиты может быть многофакторная аутентификация.

 

3. XSS (Cross-Site Scripting) - уязвимость, при которой недоверенные данные интерпретируются браузером как исполняемый код. Например, это может произойти при небезопасном отображении пользовательского содержимого. Для защиты используются безопасные DOM API, такие как textContent, контекстное экранирование данных и ограничения на выполнение или загрузку скриптов. Важно не вставлять недоверенный текст непосредственно через innerHTML без соответствующей обработки.

 

4. SQL-инъекция - уязвимость, возникающая при небезопасном объединении пользовательского ввода с текстом SQL-запроса. В результате введённые данные могут изменить структуру выполняемой команды. Параметризованные запросы позволяют передавать значения отдельно от SQL-кода. Корректное использование ORM также помогает снизить риск SQL-инъекций.

 

5. CSRF (Cross-Site Request Forgery) - атака, при которой браузер уже аутентифицированного пользователя используется для отправки нежелательного запроса. В зависимости от способа аутентификации защита может включать CSRF-токены и атрибут SameSite для cookies. Безопасная эксплуатация веб-приложения также требует HTTPS, принципа минимальных привилегий, безопасного управления секретами, обновления зависимостей, журналирования событий и резервного копирования данных. Проверять безопасность необходимо на всех этапах разработки.