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, принципа минимальных привилегий, безопасного управления
секретами, обновления зависимостей, журналирования событий и резервного
копирования данных. Проверять безопасность необходимо на всех этапах
разработки.