V13.3.2 SOAP Web Service
Requirement:#
Verify that the message payload is signed using WS-Security to ensure reliable transport between client and service.
Explanation:#
Payload сообщения относится к данным, передаваемым между клиентом (например, web application) и службой (например, web service или API). Подписание payload сообщения с помощью WS-Security означает, что данные снабжены цифровой подписью для обеспечения их целостности и подлинности во время передачи. WS-Security — это спецификация, предоставляющая набор стандартов и механизмов для защиты web service на основе SOAP. В первую очередь он касается безопасности на уровне сообщений, включая шифрование, цифровую подпись и отметку времени.
Remediation:#
Чтобы решить проблему обеспечения надежной транспортировки полезной нагрузки сообщения, можно предпринять следующие шаги:
- Реализуйте использование WS-Security для подписи полезной нагрузки сообщения. Это стандарт защиты сообщений в веб-службах, который позволяет гарантировать целостность и подлинность сообщения.
- Используйте безопасный и доверенный центр сертификации для выдачи цифровых сертификатов, которые будут использоваться для подписи полезной нагрузки сообщения.
- Используйте безопасный и зашифрованный транспортный механизм, такой как HTTPS, для передачи сообщений.
- Рассмотрите возможность реализации шлюза API, который может принудительно использовать WS-Security и транспортное шифрование, а также может применять другие меры безопасности, такие как контроль доступа и ограничение скорости.
- Регулярно проверяйте систему на наличие любых признаков взлома или несанкционированного доступа и незамедлительно реагируйте на любые обнаруженные инциденты безопасности.
- Рассмотрите возможность проведения регулярного тестирования на проникновение и оценки безопасности, чтобы выявить любые потенциальные уязвимости и обеспечить эффективность мер безопасности.
Вот пример кода на Python, который реализует WS-Security с помощью библиотеки zeep:
В этом примере клиента создается с использованием файла WSDL и пользовательского транспорта, использующего сертификат и закрытый ключ. Класс Signature используется для создания заголовка WSSE, включающего цифровую подпись, и этот заголовок устанавливается в качестве заголовка WSSE по умолчанию для клиента. При вызове метода службы подписанный payload сообщения включается в запрос, обеспечивая целостность и подлинность сообщения во время передачи.