Автор оригинала: Mohamed Rifni.
01. Инъекция SQL
Ошибки внедрения, такие как внедрение SQL, возникают, когда ненадежные данные отправляются интерпретатору как часть команды или запроса. Враждебные данные злоумышленника могут заставить интерпретатора выполнять непреднамеренные команды или получать доступ к данным без надлежащей авторизации.
Как мы защищаем приложения Мы следуем стандарту api json, поэтому риск внедрения sql-запросов на основе GET снижается. Анализаторы Json не будут анализировать полезную нагрузку, если она не соответствует стандарту json (это не сработает, если sql имеет значение). Таким образом, риск повторного использования SQL-инъекции снижается. Мы используем платформы ORM вместо подготовленных jdbc операторов или собственных запросов. Что мы должны делать больше
Следуйте строгим правилам использования собственных запросов или вообще не используйте собственные запросы. Обновите платформы ORM до новых версий ( если мы сможем каким-то образом избежать конфликтов библиотек).
02. Нарушена аутентификация и Управление сеансами
В основном это связано с захватом идентификатора сеанса/файлов cookie.
Как мы должны защищать приложения
Мы должны отключить управление сеансами при весенней загрузке.
.sessionManagement() .sessionCreationPolicy(SessionCreationPolicy.STATELESS);
Если необходимо включить управление сеансами, включите его в следующих конфигурациях
- Защита от фиксации
http.sessionManagement() .sessionFixation().migrateSession()
2. Запретить использование параметров URL для отслеживания сеансов
http.sessionManagement() .sessionFixation().migrateSession()
Что мы должны делать больше
- Время ожидания маркера доступа быстрее
- Защита от входа в систему с использованием грубой силы: Принудительное отключение учетной записи после установленного количества неверных попыток входа в систему
03. Межсайтовые сценарии XSS
Как мы должны защищать приложения
- Очистите входящие данные с помощью фильтра. Как параметры, так и данные post/put/patch
- Клиентские платформы должны иметь встроенную защиту xss
Что мы должны делать больше Используйте внешние библиотеки для дополнительной защиты (https://github.com/hdiv/hdiv)
04. Внешние сущности XML
Как мы должны защищать приложения
- Безопасно xml с использованием стандартных библиотек
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
Spring security уже решила эти проблемы на контролируемом уровне (https://github.com/spring-projects/spring-security-saml/commit/925c8925fa0d0645d7b177b6e65cfb920fc6782f)
05. Нарушен Контроль Доступа
Ограничения на то, что разрешено делать аутентифицированным пользователям. Злоумышленники могут использовать эти недостатки для доступа к несанкционированным функциям и/или данным.
Как мы защищаем приложения
- Проверка подлинности защищенных URL-адресов
- Защитите учетные данные для входа. ( либо используя сторонний сервис, либо хэшируя данные в базе данных )
Что мы должны делать больше
- Применение выполнения метода на основе ролей
- Примените базовую проверку ролей для уровней классов и уровней методов
- Будьте строги в отношении наличия классов и методов без аннотации на основе ролей Запустите средства проверки уязвимостей системы безопасности в исходном коде (https://find-sec-bugs.github.io)
06. Неправильная конфигурация системы Безопасности
Это может произойти, если безопасность настроена без предварительного ведома или если она не проверена или является результатом небезопасных конфигураций по умолчанию, неполных или специальных конфигураций. Неверно настроенные заголовки HTTP и предоставление подробных сообщений об ошибках, содержащих конфиденциальную информацию. Не только все операционные системы, платформы, библиотеки и приложения должны быть надежно настроены, но и они должны своевременно исправляться и обновляться
Как мы должны защищать приложения
- Проверьте конфигурации безопасности
Что мы должны делать больше
- Изучите безопасность весны
- Обновите версии платформы, а также операционные системы и инструменты
- Просмотрите конфигурации безопасности вместе с членами команды Тестирование на проникновение
07. Раскрытие Конфиденциальных Данных
Как мы должны защищать приложения
- Тест, тест и еще раз тест
- Проверка кода
Соответствующая статья
Соответствующая статья
Оригинал: “https://www.codementor.io/@mrifni/backend-spring-boot-security-uj4x5yddh”