Sicherheitsrisiko-Liste 
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.
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 |
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
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.
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.
Beispiel
whitelist-protocol = https
Mit dieser Regel werden nur URLs in der Form https://... durchgelassen.
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
protocol=*, host=*.myDomain.myExt, port=*, url=
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
protocol=*, host=myPortal.myDomain.myExt, port=*, url=
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
protocol=http, host=myPortal.myDomain.myExt, port=1080, url=/*
protocol=https, host=myPortal.myDomain.myExt, port=1443, url=/*
Standardmäßig ist die White-List-Tabelle leer und es werden keine Prüfungen durchgeführt.
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.