Эффект снежного обвала сервисов:
Когда сервис внезапно начинает получать высокую концентрацию одновременных запросов, и сервер не может справиться с этим, происходит накопление запросов, что может привести к недоступности других сервисов.
Решение проблемы снежного обвала сервисов с использованием фреймворка Hystrix от компании Netflix: 1. Изоляция сервисов, каждый сервис использует отдельный пул потоков для изоляции сервисов. Преимуществом является полная независимость от других сервисов, недостатком — большое потребление памяти. Также можно использовать счетчики для изоляции сервисов.
2. Отключение сервисов (фузинг), когда частота запросов к сервису становится слишком большой, происходит автоматическое понижение уровня сервиса.
3. Отключение и изоляция сервисов используются вместе.
4. Ограничение количества запросов к сервису. Различные способы ограничения:
1. Использование счетчиков, с использованием атомарных классов AtomicInteger для простой реализации счетчиков, но с проблемой критического значения.
2. Использование скользящего окна счетчиков, что решает проблему критического значения.
3. Использование бакета токенов, разработанного компанией Google в фреймворке Guava, RateLimiter. Принцип работы заключается в том, что токены добавляются в бакет с определенной частотой, и запросы, которые могут получить токен, могут быть обработаны.
4. Использование бакета для ограничения, где капли воды добавляются в бакет с любой частотой, а выход капель регулируется с фиксированной частотой. Когда емкость бакета достигает максимума, сервис становится недоступным.Основные функции, реализованные в этом проекте:
1. Использование Hystrix для изоляции сервисов, фузинга, понижения уровня сервиса и ограничения запросов.
2. Использование AOP + аннотаций + RateLimiter для ограничения запросов к сервисам.
Частые методы атаки веб-приложений и их решения: 1. Атака XSS, например, вставка исполняемого JavaScript кода в параметры запроса, который затем отображается на другой странице, что может быть использовано для атаки сайта. Решение: использование фильтров для перезаписи параметров запроса или отклонение запроса.
2. Технология защиты от кражи ссылок, например, кража изображений. Решение: проверка реферера запроса, если запрос не пришел с сайта, отклонение запроса или возврат сообщения или другого изображения.
3. SQL-инъекции в MyBatis. Использование #{} вместо ${}.
4. Атака CSRF (Cross-Site Request Forgery), аналогичная атаке типа DDOS:
Решение:
1. Использование токенов для решения проблемы неатомарности, например, получение токена перед выполнением запроса и проверка его существования.
2. Ограничение запросов.
3. Для критически важных операций, таких как оплата, переводы, заказы, лучше использовать SMS-коды или распознавание лиц.
5. Уязвимость при восстановлении пароля. Принцип эксплуатации: при смене пароля используется подтверждение по SMS-коду. Например, если код подтверждения состоит из 4 цифр, то можно использовать многопоточное создание кодов подтверждения и постоянные запросы через httpClient, пока не будет получен успешный код.Решение:
При неудачных попытках смены пароля использовать CAPTCHA.
Ограничить доступ по IP-адресу.
Сделать правила генерации кода подтверждения более сложными, избегая использования только цифр.
Уязвимость при загрузке файлов. При загрузке изображений, если не ограничивать типы файлов, можно загрузить исполняемый файл, например, внедрить исполняемый код в JSP-файл. При последующем доступе к этому файлу, это может привести к форматированию всего диска и краху сервера.
Решение:
Процесс аутентификации OAuth 2.0:
appid
и appsecret
перенаправляются на страницу аутентификации третьей стороны, возвращается code
.code
запрашивается access_token
.code
и access_token
получается userId
.Симметричное и асимметричное шифрование:Пробитие кэша:
HTTPS запросы:
Конфигурация nginx с сертификатом, публичным и приватным ключами.
Когда клиент отправляет запрос, он сначала обращается к nginx, чтобы получить сертификат (включающий информацию о центре сертификации, срок действия сертификата и т.д.) и публичный ключ. Затем клиент генерирует случайное число и шифрует параметры запроса симметричным алгоритмом, а затем шифрует случайное число публичным ключом и отправляет его на сервер.
Сервер, получив запрос, сначала расшифровывает случайное число с помощью приватного ключа, а затем расшифровывает параметры запроса с помощью соответствующего симметричного алгоритма. Это обеспечивает безопасность запроса, но снижает производительность по сравнению с HTTP запросами из-за нескольких действий шифрования и расшифровки.Кэширование, ehcache:
Это встроенный кэш JVM, который может использоваться только для приложений, написанных на Java.
Обычно используется вместе с Redis для создания двухуровневого кэша. Сначала данные проверяются в Redis, затем в ehcache, и, наконец, в базе данных.
Распределенные блокировки:
Распределенные сессии:
Заметка: Как гарантировать, что сессии не будут недействительными при выпуске проекта?
Почему возникает проблема с��域? Кросс-доменные (cross-domain) проблемы возникают из-за политики безопасности браузеров, которая ограничивает доступ к ресурсам на других доменах. Это предотвращает возможность злоупотребления сайтов, которые могут получить доступ к данным пользователя без его ведома. Кратко говоря, проблема заключается в том, что домен и порт браузера не совпадают с путём, по которому осуществляется запрос AJAX, что вызывает ограничения безопасности браузера.Решение:
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )