Wie ist der HTTP-Teil eines ICAP-Requests an einen Virenscanner aufgebaut, um binäre Daten direkt zur Überprüfung zu senden?

Antwort

Um binäre Daten (z. B. eine Datei) direkt an einen Virenscanner über das ICAP-Protokoll zu senden, wird typischerweise der ICAP-Request mit einem eingebetteten HTTP-Request oder HTTP-Response aufgebaut, in dessen Body die zu prüfenden binären Daten enthalten sind. Die meisten Virenscanner erwarten dabei eine HTTP-Response mit einem Content-Body. **Beispiel für einen ICAP-Request (REQMOD oder RESPMOD) mit binären Daten:** Angenommen, du möchtest eine Datei prüfen lassen, dann wird meist das RESPMOD-Kommando verwendet. Der Aufbau sieht so aus: ``` RESPMOD icap://virenscanner.example.com/scan ICAP/1.0 Host: virenscanner.example.com Allow: 204 Encapsulated: res-hdr=0, res-body=xxx HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: <Länge der Datei in Bytes> <binäre Daten der Datei> ``` **Erklärung der wichtigsten Teile:** - `RESPMOD icap://... ICAP/1.0`: ICAP-Request-Zeile, gibt das Kommando und die Service-URL an. - `Encapsulated`: Gibt an, ab welchem Byte-Offset im ICAP-Request die jeweiligen HTTP-Teile beginnen. `res-hdr=0` bedeutet, dass die HTTP-Response-Header direkt nach den ICAP-Headern beginnen. `res-body=xxx` gibt den Offset an, ab dem der Body (also die binären Daten) beginnt. - Der eingebettete HTTP-Response-Header (`HTTP/1.1 200 OK` usw.) ist erforderlich, weil ICAP immer HTTP-Nachrichten kapselt. - Im Body folgt dann die Datei im Binärformat. **Chunked Encoding (optional):** Falls die Datei sehr groß ist oder die Länge nicht bekannt ist, kann auch Chunked Transfer Encoding verwendet werden. Dann sieht der Body so aus: ``` HTTP/1.1 200 OK Content-Type: application/octet-stream Transfer-Encoding: chunked <chunked binäre Daten> ``` **Wichtige Hinweise:** - Die genaue Implementierung kann je nach Virenscanner und ICAP-Server leicht variieren. Die Dokumentation des jeweiligen ICAP-Dienstes sollte beachtet werden. - Die ICAP-Spezifikation findest du hier: [RFC 3507](https://datatracker.ietf.org/doc/html/rfc3507) - Beispielhafte Implementierungen und weitere Details findest du z. B. bei [C-ICAP](http://c-icap.sourceforge.net/) oder [Symantec ICAP](https://techdocs.broadcom.com/us/en/symantec-security-software/web-and-network-security/proxySG/6-7/icap-and-icap-adaptation/Content/Topics/ICAP/icap_intro.htm). **Zusammengefasst:** Der HTTP-Teil im ICAP-Request besteht aus einem vollständigen HTTP-Response-Header (z. B. `HTTP/1.1 200 OK`), gefolgt von den binären Daten im Body. Die ICAP-Header geben an, wo die jeweiligen Teile beginnen.

Neue Frage stellen

Verwandte Fragen

Wie ist der ICAP-Dialog mit einem Virenscanner, wenn die Preview-Größe größer als die Chunk-Größe ist, und welche Daten werden dabei an den Scanner gesendet?

Ein Dialog mit einem Virenscanner via ICAP (Internet Content Adaptation Protocol) läuft typischerweise so ab, dass ein ICAP-Client (z. B. ein Proxy) eine Anfrage an einen ICAP-Server (z. B. einen... [mehr]

Wie läuft der Dialog mit einem Virenscanner via ICAP ab, wenn ein Preview in mehreren Chunks gesendet wird, und welche Daten werden an den Scanner geschickt?

Ein Dialog mit einem Virenscanner via ICAP (Internet Content Adaptation Protocol), bei dem ein Preview in mehreren Chunks gesendet wird, läuft typischerweise wie folgt ab: **1. ICAP-REQMOD-Anfra... [mehr]

Wie erkenne ich bei einem Virenscan über ICAP anhand von 'ICAP/1.0 204' oder 'ICAP/1.0 200', ob die Daten virenbehaftet sind?

Beim Einsatz von ICAP (Internet Content Adaptation Protocol) zur Virenprüfung gibt der ICAP-Server nach der Analyse einer Datei eine Antwort an den Client zurück. Die wichtigsten Statuscodes... [mehr]