Prüfung der Kennzeichnung von CSRF-Formularen
Der Cross Site Request Forgery (CSRF)-Formulartaggingcheck kennzeichnet jedes Webformular, das von einer geschützten Website an Benutzer gesendet wird, mit einer eindeutigen und unvorhersehbaren FormID und untersucht dann die von Benutzern zurückgegebenen Webformulare, um sicherzustellen, dass die angegebene FormID korrekt ist. Diese Prüfung schützt vor websiteübergreifenden Anforderungsfälschungen. Diese Prüfung gilt nur für HTML-Anfragen, die ein Webformular mit oder ohne Daten enthalten. Sie gilt nicht für XML-Anfragen.
Der CSRF Form Tagging Check verhindert, dass Angreifer ihre eigenen Webformulare verwenden, um umfangreiche Formularantworten mit Daten an Ihre geschützten Websites zu senden. Diese Prüfung erfordert im Vergleich zu bestimmten anderen Sicherheitsüberprüfungen, die Webformulare eingehend analysieren, relativ wenig CPU-Verarbeitungskapazität. Es ist daher in der Lage, großvolumige Angriffe abzuwehren, ohne die Leistung der geschützten Website oder der Web App Firewall selbst ernsthaft zu beeinträchtigen.
Bevor Sie die CSRF Form Tagging-Prüfung aktivieren, müssen Sie Folgendes beachten:
- Sie müssen das Tagging von Formularen aktivieren. Die CSRF-Prüfung hängt vom Formular-Tagging ab und funktioniert ohne dieses nicht.
- Sie müssen die integrierte Caching-Funktion von NetScaler für alle Webseiten deaktivieren, die Formulare enthalten, die durch dieses Profil geschützt sind. Die integrierte Caching-Funktion und das CSRF-Formular-Tagging sind nicht kompatibel.
- Sie müssen erwägen, die Referer-Überprüfung zu aktivieren. Die Referer-Überprüfung ist Teil der Start-URL-Prüfung, verhindert jedoch seitenübergreifende Anforderungsfälschungen und nicht Verstöße gegen die Start-URL. Die Referer-Überprüfung belastet die CPU auch weniger als die CSRF Form Tagging-Prüfung. Wenn eine Anfrage gegen die Referer-Überprüfung verstößt, wird sie sofort blockiert, sodass die CSRF Form Tagging-Prüfung nicht aufgerufen wird.
- Die CSRF-Formular-Tagging-Prüfung funktioniert nicht bei Webformularen, die unterschiedliche Domänen in der Formular-URL und der Formular-Aktions-URL verwenden. CSRF Form Tagging kann beispielsweise ein Webformular mit einer Formularursprungs-URL von
http://www.example.com
und einer Formularaktions-URL vonhttp://www.example.org/form
.pl nicht schützen, da example.com und example.org unterschiedliche Domänen sind.
Wenn Sie den Assistenten oder die GUI verwenden, können Sie im Dialogfeld CSRF Form Tagging Check ändern auf der Registerkarte Allgemein die Aktionen Blockieren, Loggen, Lernen und Statistik aktivieren oder deaktivieren.
Wenn Sie die Befehlszeilenschnittstelle verwenden, können Sie den folgenden Befehl eingeben, um den CSRF Form Tagging Check zu konfigurieren:
set appfw profile <name> -CSRFtagAction [**block**] [**log**] [**learn**] [**stats**] [**none**]
Um Lockerungen für die CSRF Form Tagging-Prüfung festzulegen, müssen Sie die GUI verwenden. Klicken Sie auf der Registerkarte Prüfungen des Dialogfelds Überprüfung der CSRF-Formularkennzeichnung ändern auf Hinzufügen, um das Dialogfeld Relaxation der CSRF-Formularkennzeichnung hinzufügen zu öffnen, oder wählen Sie eine vorhandene Relaxation aus und klicken Sie auf Öffnen, um das Dialogfeld Relaxation ändern zu öffnen. Beide Dialogfelder bieten dieselben Optionen für die Konfiguration einer Entspannung.
Eine Warnung wird generiert, wenn Sie das NetScaler Web App Firewall-Sitzungslimit auf einen Wert von 0 oder weniger setzen, da sich eine solche Einstellung auf die erweiterte Schutzüberprüfung auswirkt, die eine ordnungsgemäß funktionierende Web App Firewall-Sitzung erfordert.
Im Folgenden finden Sie Beispiele für Lockerungen von CSRF-Formular-Tagging-Checks:
Hinweis: Die folgenden Ausdrücke sind URL-Ausdrücke, die sowohl in den URL-Rollen Form Origin URL als auch Form Action URL verwendet werden können.
-
Wählen Sie URLs aus, die mit einer beliebigen Zeichenfolge nach der Abfrage beginnen
http://www.example.com/search.pl?
und diese enthalten, mit Ausnahme einer neuen Abfrage:^http://www[.]example[.]com/search[.]pl?[^?]*$ <!--NeedCopy-->
-
Wählen Sie URLs, die mit Pfaden
http://www.example-español.com
und Dateinamen beginnen und diese enthalten, die aus Groß- und Kleinbuchstaben, Zahlen, Nicht-ASCII-Sonderzeichen und ausgewählten Symbolen im Pfad bestehen. Das ñ-Zeichen und alle anderen Sonderzeichen werden als codierte UTF-8-Zeichenketten dargestellt, die den Hexadezimalcode enthalten, der jedem Sonderzeichen im UTF-8-Zeichensatz zugewiesen ist:
^http://www[.]example-espa\xC3\xB1ol[.]com/(([0-9A-Za-z]|\x[0-9A-Fa-f][0-9A-Fa-f])
([0-9A-Za-z_-]|\x[0-9A-Fa-f][0-9A-Fa-f])\*/)\*([0-9A-Za-z]|\x[0-9A-Fa-f][0-9A-Fa-f])([0-9A-Za-z_-]|\x[0-9A-Fa-f][0-9A-Fa-f])*[.](asp|htp|php|s?html?)$
<!--NeedCopy-->
- Wählen Sie alle URLs aus, die die Zeichenfolge /search.cgi enthalten? :
^[^?<>]\*/search[.]cgi?[^?<>]\*$
<!--NeedCopy-->
Wichtig
Reguläre Ausdrücke sind leistungsstark. Wenn Sie mit regulären Ausdrücken im PCRE-Format nicht genau vertraut sind, überprüfen Sie alle regulären Ausdrücke, die Sie schreiben. Stellen Sie sicher, dass sie genau die URL definieren, die Sie als Ausnahme hinzufügen möchten, und nichts anderes. Die unvorsichtige Verwendung von Platzhaltern und insbesondere der Kombination aus Punkt und Stern (.*) aus Metazeichen und Platzhaltern kann zu unerwünschten Ergebnissen führen, z. B. zum Sperren des Zugriffs auf Webinhalte, die Sie nicht blockieren wollten, oder das Zulassen eines Angriffs, den die Prüfung andernfalls blockiert hätte.
Tipp
Wenn der Referrer-Header enableValidate unter der Start-URL-Aktion aktiviert ist, stellen Sie sicher, dass die Referrer-Header-URL auch zu StartUrl hinzugefügt wird.
Hinweis
Wenn NetScaler das appfw_session_limit erreicht und CSRF-Prüfungen aktiviert sind, friert die Webanwendung ein.
Um das Einfrieren von Webanwendungen zu verhindern, verringern Sie das Sitzungs-Timeout und erhöhen Sie das Sitzungslimit, indem Sie die folgenden Befehle verwenden:
Über die CLI: > setappfw-Einstellungen —sessiontimeout 300 Von der Shell aus: root @ns # nsapimgr_wr.sh -s appfw_session_limit=200000
Das Protokollieren und Generieren von SNMP-Alarmen, wenn appfw_session_limit erreicht ist, hilft Ihnen bei der Behebung und beim Debuggen von Problemen.