SOAP(Simple Object Access Protocol)는 SOA(Service Oriented Architecture) 내에서 웹 서비스를 구현하는 데 사용되는 XML 기반의 핵심 애플리케이션 프로토콜입니다. SOAP은 주로 HTTP 및 미들웨어 메시징 시스템(JMS, MQ Series, MSMQ, Tuxedo, TIBCO RV)을 통해 전송되지만, SMTP(Simple Mail Transfer Protocol) 및 FTP(File Transfer Protocol)와 같은 다른 프로토콜을 통해서도 전송할 수 있습니다.

SOAP 메시지는 일반적으로 다음 요소로 구성됩니다:

  • Envelope: SOAP Envelope는 SOAP 메시지의 루트 요소이며 필수입니다. 기본적으로 Envelope는 일반 봉투가 편지를 담는 것처럼 SOAP 메시지를 담습니다.
  • 헤더: SOAP 헤더는 선택 사항이며, 사용되는 경우 인증, 주소 지정, 라우팅 세부 정보와 같은 애플리케이션별 정보를 포함합니다.
  • 본문: SOAP 본문은 필수이며, 호출되는 특정 원격 작업과 교환되는 데이터(매개변수)를 비롯해 실제로 전송되는 애플리케이션 메시지를 포함합니다.

SOAP 메시지는 애플리케이션과 클라이언트가 메시지에 포함된 데이터를 구문 분석하고 적절한 로직을 실행하는 데 필요한 정보를 담아야 하므로 크기가 큰 경우가 많습니다. 메시지 크기가 커질수록 서버에서 필요한 처리량도 늘어나 서버 리소스 사용량이 증가하고 전체 용량은 감소합니다. 또한 크기 증가는 메시지를 전송하는 데 더 많은 네트워크 리소스가 필요하므로 SOAP을 기반으로 구축된 애플리케이션의 성능에도 부정적인 영향을 미칠 수 있습니다.

SOAP는 XML을 기반으로 하므로 다양한 XML 관련 공격과 취약점에 노출되며, 대개 HTTP인 전송 계층 프로토콜과 관련된 공격에도 취약합니다.

SOAP 관련 보안 및 성능 문제를 해결할 수 있는 F5 제품: BIG-IP Application Security Manager