Show TOC

HintergrundSicherheitsrisiko-Liste Dieses Dokument in der Navigationsstruktur finden

 

Die Sicherheitsrisiko-Liste oder White-List ermöglicht es, URL-ähnliche Parameter vom Portal in den AS-ABAP zu integrieren. Dazu steht die Methode CL_HTTP_UTILITY=>IF_HTTP_UTILITY~CHECK_HTTP_WHITELIST zur Verfügung.

In der White-List werden Muster konfiguriert, mit denen URLs aus externen Quellen abgeglichen werden. Damit wird verifiziert, dass diese URLs akzeptabel sind. Die White-List ist in der Tabelle HTTP_WHITELIST gespeichert, die über Transaktion SE16 geändert werden kann.

Tabelle HTTP_WHITELIST

Jeder Tabellensatz hat die folgende Struktur:

  • entry_type

    URL-Typ, der mit diesem Eintrag abgeglichen werden soll.

    Beispiel: CSS Off-box Referenz

  • host

    Hostname, der mit dem eingehenden Host verglichen wird. Dieses Feld ist leer, wenn der Hostname nicht für einen spezifischen Eintrag überprüft wird. Der Platzhalter (*) kann verwendet werden.

  • protocol

    Zu überprüfendes Protokoll. In der Regel HTTP oder HTTPS. Dieses Feld kann leer sein, wenn keine Prüfung durchgeführt wird.

  • port

    Zu überprüfende Portnummer. Darf nur aus Ziffern bestehen, leer lassen für keine Prüfung.

  • url

    URL für die Prüfung gegen die eingehende URL. Der Platzhalter (*) kann verwendet werden.

Wenn keine Einträge in der Tabelle HTTP_WHITELIST vorliegen, werden keine Prüfungen durchgeführt.

Sobald die URL mit ihren einzelnen Bestandteilen vorhanden ist, wird sie gegen die Tabelle mit der White-List abgeglichen. Diese Tabelle enthält auch die einzelnen Bestandteile der URL, die eins nach dem anderen abgeglichen werden.

Mit dem entry-type können verschiedene Arten von White-Lists konfiguriert werden. Üblicherweise wird in einer White-List definiert, von welchem Server CSS-Themes geladen werden dürfen. Diese CSS-Themen werden geladen, indem ein mitgelieferter URL-Pointer im HTML generiert wird, der zurück auf den Portal-Server zeigt.

Wenn Parameter nicht spezifiziert sind, werden sie nicht abgeprüft. Es wird davon ausgegangen, dass sie übereinstimmen.

Wenn ein Maskierungszeichen (*) spezifiziert ist, wird es mit dem empfangenen String abgeglichen.

URL-Beispiele

URL

Standard-Port/Standard-Root

http://myHost.myDomain.myExt:1080/myUrl

http://myHost.myDomain.myExt/myUrl

Standard-Port 80

https://myHost.myDomain.myExt/myUrl

Standard-Port 443

http://myHost.myDomain.myExt:1080

Standard-Root url

http://myHost.myDomain.myExt

Standard-Root url

/myUrl

Keine Host-Daten angegeben

Beispiel Beispiel

whitelist-protocol = (empty string)

Hier wird implizit angegeben, dass das Protokoll nicht geprüft wird. Alle URLs in der Form http[s]://... oder /... werden durchgelassen, da nicht abgeprüft wird, ob ein Protokoll gesetzt wurde.

Ende des Beispiels.

Beispiel Beispiel

whitelist-protocol = *

Hier wird geprüft, ob das Protokoll mit irgendeinen Wert definiert wurde. Alle URLs in der Form http[s]://... werden durchgelassen. URLs in der Form /... werden jedoch nicht akzeptiert, da nach dieser Regel kein Protokoll verfügbar ist.

Ende des Beispiels.

Beispiel Beispiel

whitelist-protocol = https

Mit dieser Regel werden nur URLs in der Form https://... durchgelassen.

Ende des Beispiels.

Im einfachsten Fall verwenden Sie einfach eine White-List mit leeren Feldern und führen gar keine Checks durch. Der Zweck der White-List-Tabelle ist es jedoch, einen vom Kunden benötigten Sicherheitsstandard zu bieten.

Beispielsweise können Sie einen Portal-Server haben, der URLs bereitstellt, die auf die Portal-Themes zeigen (CSS-Dateien). Auf einer ersten Sicherheitsebene könnten Sie einen White-List-Filter in der folgenden Form verwenden:

Syntax Syntax

  1. protocol=*, host=*.myDomain.myExt, port=*, url=
Coding-Ende

Damit würden effektiv alle Referenzen auf anderen Maschinen in der gleichen Domäne akzeptiert.

Es ist auch ein Szenario möglich, nach dem die Last auf diesen einen Portal-Server eingeschränkt werden soll. Das sieht dann folgendermaßen aus:

Syntax Syntax

  1. protocol=*, host=myPortal.myDomain.myExt, port=*, url=
Coding-Ende

Hier bestehen jedoch noch diverse Sicherheitslücken. Zum Beispiel kann auf dem gleichen Portal-Server auch noch ein Web-Server installiert sein. Der Portal-Server ist sicher, aber der Web-Server nicht unbedingt. Die URLs würden weiterhin die White-List passieren. Sie benötigen aber einen Standard-Eintrag, mit dem nur die URLs von dem Portal-Server akzeptiert werden. Daher sollten Sie immer sowohl das Protokoll als auch die Port-Angaben spezifizieren:

Syntax Syntax

  1. protocol=http,  host=myPortal.myDomain.myExt, port=1080, url=/*
  2. protocol=https, host=myPortal.myDomain.myExt, port=1443, url=/*
Coding-Ende

Standardmäßig ist die White-List-Tabelle leer und es werden keine Prüfungen durchgeführt.

Methode CHECK_HTTP_WHITELIST

Diese Methode prüft, ob eine empfangene URL mit einer White-List übereinstimmt, die in einer lokalen Datenbank abgelegt ist. Dabei ist die URL, die als Eingabeparameter dient, entweder eine absolute URL oder eine Server-spezifische absolute URL.