Cross-Site-Request-Forgery
Eine Cross-Site-Request-Forgery (meist CSRF oder XSRF abgekürzt, deutsch etwa „Websiteübergreifende Anfragenfälschung“, auch Session-Riding genannt) ist ein Angriff auf ein Computersystem, bei dem der Angreifer eine Transaktion in einer Webanwendung durchführt. Dies geschieht nicht direkt, sondern der Angreifer bedient sich dazu eines Opfers, das bei einer Webanwendung bereits angemeldet sein muss. Dem Webbrowser des Opfers wird ohne dessen Wissen eine HTTP-Anfrage untergeschoben. Der Angreifer wählt die Anfrage so, dass bei deren Aufruf die Webanwendung die vom Angreifer gewünschte Aktion ausführt.
Das Sicherheitsproblem ist auf die Zustandslosigkeit von HTTP zurückzuführen, da nach einmaliger Authentifizierung der Browser implizit jedes Mal seine Sitzungsdaten an den Server sendet.
Im Artikel hier wird vereinfacht vom Cookie gesprochen, wenn eine Sitzung (insbesondere ein Sitzungsbezeichner) gemeint ist. CSRF tritt jedoch nicht nur bei Cookie-basierter, sondern auch bei Basic- bzw. Digest-Authentifizierung auf.
Geschichte
Bereits im Oktober 1988 veröffentlichte Norm Hardy ein Dokument, in dem er den Sachverhalt von Vertrauen auf Anwendungsebene diskutierte und diesen „a Confused Deputy“ (dt. etwa „einen verwirrten Stellvertreter“) nannte. Im Jahr 2000 wurde auf der Sicherheits-Mailingliste Bugtraq erörtert, wie ZOPE von einem confused-deputy-Problem betroffen war, welches man heute als CSRF-Sicherheitslücke einstufen würde. Später dann, im Jahr 2001, veröffentlichte Peter Watkins auf Bugtraq einen Beitrag<ref>{{#if:2012-07-09|{{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}| |}}}}{{#if:Peter Watkins|Peter Watkins: }}{{#if:https://web.archive.org/web/20120709094554/http://www.tux.org/~peterw/csrf.txt%7C{{#if:Cross-Site Request Forgeries (Re: The Dangers of Allowing Users to Post Images)|[{{#invoke:Vorlage:Internetquelle|archivURL|1={{#invoke:URLutil|getNormalized|1=https://web.archive.org/web/20120709094554/http://www.tux.org/~peterw/csrf.txt}}}} {{#invoke:Vorlage:Internetquelle|TitelFormat|titel=Cross-Site Request Forgeries (Re: The Dangers of Allowing Users to Post Images)}}]{{#if:| ({{{format}}})}}{{#if:| {{{titelerg}}}{{#invoke:Vorlage:Internetquelle|Endpunkt|titel={{{titelerg}}}}}}}}}|{{#if:http://www.tux.org/~peterw/csrf.txt%7C{{#if:{{#invoke:TemplUtl%7Cfaculty%7C1}}%7C{{#invoke:Vorlage:Internetquelle%7CTitelFormat%7Ctitel={{#invoke:WLink%7CgetEscapedTitle%7C1=Cross-Site Request Forgeries (Re: The Dangers of Allowing Users to Post Images)}}}}|[{{#invoke:URLutil|getNormalized|1=http://www.tux.org/~peterw/csrf.txt}} {{#invoke:Vorlage:Internetquelle|TitelFormat|titel={{#invoke:WLink|getEscapedTitle|1=Cross-Site Request Forgeries (Re: The Dangers of Allowing Users to Post Images)}}}}]}}{{#if:| ({{{format}}}{{#if:1Bugtraq2001-06-13https://web.archive.org/web/20120709094554/http://www.tux.org/~peterw/csrf.txt{{#if: 2012-07-26 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}}}}
| )
| {{#if:{{#ifeq:en|de||{{#if:en|1}}}}| ;
| )}}}}}}{{#if:| {{{titelerg}}}{{#invoke:Vorlage:Internetquelle|Endpunkt|titel={{{titelerg}}}}}}}}}}}{{#if:http://www.tux.org/~peterw/csrf.txt%7C{{#if:{{#invoke:URLutil%7CisResourceURL%7C1=http://www.tux.org/~peterw/csrf.txt}}%7C%7C}}}}{{#if:Cross-Site Request Forgeries (Re: The Dangers of Allowing Users to Post Images)|{{#if:{{#invoke:WLink|isValidLinktext|1=Cross-Site Request Forgeries (Re: The Dangers of Allowing Users to Post Images)|lines=0}}||}}}}{{#if: | In: {{#invoke:Vorlage:Internetquelle|TitelFormat|titel={{{werk}}}}}}}{{#if: Bugtraq| Bugtraq{{#if: 2001-06-13https://web.archive.org/web/20120709094554/http://www.tux.org/~peterw/csrf.txt%7C,%7C{{#if: 2012-07-26 | {{#if:{{#invoke:TemplUtl|faculty|}}||,}}}}}}}}{{#if: 2001-06-13| {{#if:{{#invoke:DateTime|format|2001-06-13|noerror=1}}
|{{#invoke:DateTime|format|2001-06-13|T._Monat JJJJ}}
|{{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, datum=2001-06-13|class=Zitationswartung}} }}{{#if: https://web.archive.org/web/20120709094554/http://www.tux.org/~peterw/csrf.txt%7C,%7C{{#if: 2012-07-26 | {{#if:{{#invoke:TemplUtl|faculty|}}||,}}}}}}}}{{#if: | S. {{{seiten}}}{{#if: https://web.archive.org/web/20120709094554/http://www.tux.org/~peterw/csrf.txt%7C,%7C{{#if: 2012-07-26 | {{#if:{{#invoke:TemplUtl|faculty|}}||,}}}}}}}}{{#if: https://web.archive.org/web/20120709094554/http://www.tux.org/~peterw/csrf.txt{{#invoke:TemplUtl%7Cfaculty%7C1}}%7C+{{#if:2001-06-13Bugtraq%7C{{#if:https://web.archive.org/web/20120709094554/http://www.tux.org/~peterw/csrf.txt%7Carchiviert%7Cehemals}}%7C{{#if:https://web.archive.org/web/20120709094554/http://www.tux.org/~peterw/csrf.txt%7CArchiviert%7CEhemals}}}}+{{#if:https://web.archive.org/web/20120709094554/http://www.tux.org/~peterw/csrf.txt%7Cvom%7Cim}}+Vorlage:Referrer{{#if:{{#invoke:TemplUtl|faculty|1}}| (nicht mehr online verfügbar)}}{{#if: 2012-07-09| am {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}|2012-07-09{{#if:438886||(?)}}}}}}{{#if: 2012-07-26|;}}}}{{#if: 2012-07-26| {{#if:2001-06-13Bugtraqhttps://web.archive.org/web/20120709094554/http://www.tux.org/~peterw/csrf.txt{{#invoke:TemplUtl%7Cfaculty%7C1}}%7Cabgerufen%7CAbgerufen}} {{#switch: {{#invoke:Str|len| {{#invoke:DateTime|format| 2012-07-26 |ISO|noerror=1}} }}
|4=im Jahr
|7=im
|10=am
|#default={{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, abruf=2012-07-26|class=Zitationswartung}} }} {{#invoke:DateTime|format|2012-07-26|T._Monat JJJJ}}
| {{#invoke:TemplUtl|failure|1=Vorlage:Internetquelle | abruf=2026-MM-TT ist Pflichtparameter}} }}{{#if:{{#ifeq:en|de||{{#if:en|1}}}}|{{#if:1Bugtraq2001-06-13https://web.archive.org/web/20120709094554/http://www.tux.org/~peterw/csrf.txt{{#if: 2012-07-26 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}}}}
| (
| {{#if: | | (}}
}}{{#ifeq:{{#if:en|en|de}}|de||
{{#invoke:Multilingual|format|en|slang=!|split=[%s,]+|shift=m|separator=, }}}}{{#if: |{{#ifeq:{{#if:en|en|de}}|de||, }}{{{kommentar}}}}})}}{{#if: 2001-06-13https://web.archive.org/web/20120709094554/http://www.tux.org/~peterw/csrf.txt{{#if: 2012-07-26 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}} }}en|{{#if: |: {{
#if:
| „{{
#ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
| Vorlage:Str trim
| {{#invoke:Vorlage:lang|flat}}
}}“
| {{#ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
| „Vorlage:Str trim“
| {{#invoke:Text|quote
|1={{#if:
| {{#invoke:Vorlage:lang|flat}}
| {{#invoke:Vorlage:lang|flat}} }}
|2={{#if: {{#invoke:TemplUtl|faculty|}}|de-CH|de}}
|3=1}} }}
}}{{#if:
| (<templatestyles src="Person/styles.css" />{{#if: | : }}{{#if: | , deutsch: „“ }})
| {{#if:
| ({{#if: | , deutsch: „“ }})
| {{#if: | (deutsch: „“) }}
}}
}}{{#if: {{{zitat}}}
| {{#if:
| {{#if: {{{zitat}}}
| Vorlage:": Text= und 1= gleichzeitig, bzw. Pipe zu viel }} }}
| Vorlage:": Text= fehlt }}{{#if: | {{#if: {{#invoke:Text|unstrip|{{{ref}}}}}
| Vorlage:": Ungültiger Wert: ref=
| {{{ref}}} }}
}}|.{{#if:{{#invoke:TemplUtl|faculty|1}}|{{#if:https://web.archive.org/web/20120709094554/http://www.tux.org/~peterw/csrf.txt%7C%7C{{#ifeq: 1 | JaKeinHinweis |{{#switch:
|0|=Vorlage:Toter Link/Core{{#if: http://www.tux.org/~peterw/csrf.txt | {{#if: | [1] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }} }} | (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.) }}{{#switch: |no|0|= |#default={{#if: || }} }}{{#invoke:TemplatePar|check |opt = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: http://www.tux.org/~peterw/csrf.txt | {{#if:{{#invoke:URLutil|isWebURL|http://www.tux.org/~peterw/csrf.txt}} || {{#if: || }} }} | {{#if: | {{#if: || }} | {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: deadurl |checked|deadurl|= |#default= {{#if: || }} }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=http://www.tux.org/~peterw/csrf.txt Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. ) {{#if: | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }} }}Vorlage:Toter Link/Core{{#switch: |no|0|= |#default= {{#if: || }} }}{{#invoke:TemplatePar|check |all = inline= url= |opt = datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: http://www.tux.org/~peterw/csrf.txt | {{#if:{{#invoke:URLutil|isWebURL|http://www.tux.org/~peterw/csrf.txt}} || {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: deadurl |checked|deadurl|= |#default= {{#if: || }} }}[http://www.tux.org/~peterw/csrf.txt }}|{{#switch: |0|=Vorlage:Toter Link/Core{{#if: http://www.tux.org/~peterw/csrf.txt | {{#if: | [2] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: | {{#if: | | Vorlage:Toter Link/archivebot }} }} | (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.) }}{{#switch: |no|0|= |#default={{#if: || }} }}{{#invoke:TemplatePar|check |opt = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: http://www.tux.org/~peterw/csrf.txt | {{#if:{{#invoke:URLutil|isWebURL|http://www.tux.org/~peterw/csrf.txt}} || {{#if: || }} }} | {{#if: | {{#if: || }} | {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: |checked|deadurl|= |#default= {{#if: || }} }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=http://www.tux.org/~peterw/csrf.txt Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. ) {{#if: | {{#if: | | Vorlage:Toter Link/archivebot }} }}Vorlage:Toter Link/Core{{#switch: |no|0|= |#default= {{#if: || }} }}{{#invoke:TemplatePar|check |all = inline= url= |opt = datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: http://www.tux.org/~peterw/csrf.txt | {{#if:{{#invoke:URLutil|isWebURL|http://www.tux.org/~peterw/csrf.txt}} || {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: |checked|deadurl|= |#default= {{#if: || }} }}[http://www.tux.org/~peterw/csrf.txt }} }}}}}}}}}}{{#if:| {{#invoke:Vorlage:Internetquelle|archivBot|stamp={{{archiv-bot}}}|text={{#if:https://web.archive.org/web/20120709094554/http://www.tux.org/~peterw/csrf.txt%7CVorlage:Webarchiv/archiv-bot}}
}}}}{{#invoke:TemplatePar|check |all= url= titel= |opt= autor= hrsg= format= sprache= titelerg= werk= seiten= datum= abruf= zugriff= abruf-verborgen= archiv-url= archiv-datum= archiv-bot= kommentar= zitat= AT= CH= offline= |cat= {{#ifeq: 0 | 0 | Wikipedia:Vorlagenfehler/Vorlage:Internetquelle}} |template= Vorlage:Internetquelle |format=0 |preview=1 }}</ref> zur Diskussion „The Dangers of Allowing Users to Post Images“ (dt. etwa „Gefahren, wenn Anwender Bilder einbinden dürfen“), mit der er den Ausdruck „Cross-Site-Request-Forgery“ prägte.
Beispiele
Ein recht harmloses Beispiel einer CSRF wäre ein Link auf der Webseite des Angreifers zu der Abmelden-Funktion auf der Wikipedia:
https://de.wikipedia.org/w/index.php?title=Spezial:Userlogout
Wird einem in der Wikipedia angemeldeten Benutzer dieser Link untergeschoben, sodass sein Browser diese Anfrage absetzt, wird er ohne eigenes Zutun von der Wikipedia abgemeldet, vorausgesetzt die Webanwendung auf Wikipedia hat keinen Schutz gegen CSRF-Angriffe. In der Realität muss die Abmeldung bei der Wikipedia hier allerdings noch einmal bestätigt werden und der eigentliche Logout-Vorgang funktioniert über eine POST-Anfrage.
Schwerwiegender wäre eine solche URL bei der Benutzerverwaltung einer nicht öffentlichen Seite. Zum Beispiel könnte der Angreifer mit
https://www.example.com/admin.php?action=new_user&name=baduser&password=geheim
einen neuen Benutzer anlegen und sich somit unberechtigten Zugang zu der entsprechenden Webanwendung verschaffen, wenn er es schafft, dem Administrator der Webanwendung diese HTTP-Anfrage unterzuschieben und dieser angemeldet ist.
Angriffsvektoren
Damit der Angreifer eine Cross-Site-Request-Forgery ausführen kann, muss er den Webbrowser des Opfers dazu bringen, einen oder mehrere vom Angreifer manipulierte HTTP-Anfragen auszuführen. Hierzu gibt es mehrere Angriffsvektoren:
Cross-Site-Scripting
Mittels Cross-Site-Scripting (XSS) kann ein Angreifer z. B. einen img- oder script-Tag in die Webanwendung einbauen, der einen HTTP-Request verursacht. Vor dieser Methode kann sowohl die Same-Origin-Policy als auch das SameSite-Attribut nicht schützen, da die Anfragen von innerhalb der Webanwendung ausgehen. Die Methode mit einem script-Tag erlaubt es dem Angreifer sogar, auch POST-Requests zu senden. Vor dieser Bedrohung schützen die unten stehenden Abwehrmaßnahmen allerdings nicht, denn das eigentliche Problem liegt hier in der XSS-Lücke.
Unterschieben der URL
Existieren in einer Webanwendung GET-Schnittstellen, die Daten am Server verändern, ist es möglich, ein eingeloggtes Opfer mittels Social Engineering dazu zu bringen, auf einen Link zu klicken, durch den das Opfer unwissentlich dann eine vom Angreifer gewünschte Aktion auf der Webseite ausführt.
Alternativ könnte der Angreifer solch eine URL z. B. in einem img-Tag auf einer eigenen Webseite verstecken und das Opfer dann auf diese Seite locken, wodurch die GET-Anfrage ausgeführt würde.
Schädliche Formulare
Lockt ein Angreifer ein Opfer auf die eigene Webseite, kann er ein verstecktes Formular in die Webseite einbauen, das einen POST-Endpunkt einer anderen Webseite, auf der das Opfer eingeloggt ist, als Ziel hat. Die Same-Origin-Policy verhindert zwar lesenden Zugriff auf andere Webseiten, aber die Anfrage wird trotzdem zuerst abgeschickt, um auf CORS-Header zu prüfen, und erst dann wird die Antwort gegebenenfalls verworfen. Der Server hat diese dann bereits empfangen und damit die vom Angreifer gewünschte Aktion ausgeführt.
Bei vielen Arten von durch JavaScript veranlassten POST-Anfragen wird vorher eine Preflight-Check-Anfrage gesendet, die die Kontrolle der CORS-Header ermöglicht, ohne die eigentliche POST-Request zu senden. Bei Formularen ist dies allerdings aus Gründen der Rückwärtskompatibilität nicht der Fall, weswegen dieser Angriff auch in modernen Browsern möglich ist, indem man mittels JavaScript ein verstecktes Formular erstellt und absendet.
Abwehrmaßnahmen
Je nach Angriffsvektor ist entweder der Benutzer für clientseitige oder der Betreiber der Webanwendung für serverseitige Abwehrmaßnahmen gegen eine Cross-Site-Request-Forgery zuständig.
Serverseitig
Nutzung korrekter HTTP-Methoden
Die Sicherheitskonzepte der Browser basieren darauf, dass GET-Anfragen zu keiner Veränderung von Daten auf dem Server führen. Sollen Daten verändert werden, so sollten dafür POST-, PUT-, PATCH- oder DELETE-Schnittstellen verwendet werden.
Dies verhindert einfache Angriffe wie ein Unterschieben der URL, da das Anklicken eines Links erstmal nur eine GET-Anfrage auslöst, schützt aber nicht vor raffinierteren Angriffen wie z. B. durch Schädliche Formulare.
{{#invoke:Vorlage:Siehe auch|f}}
SameSite-Attribut
Das SameSite-Attribut spezifiziert, wie ein Cookie beim Aufruf der Seite aus dem Zugriffskontext anderer Seiten verwendet werden darf. In heutigen Browsern stellt SameSite=Strict einen wirksamen Schutz gegen CSRF dar. Falls auf der Seite keine sensitiven Aktionen durch GET-Requests ausgeführt werden können, reicht auch SameSite=Lax aus.
SameSite=Lax ist in modernen Browsern bereits die Standardeinstellung für Cookies. Daher reicht es eigentlich aus, dass die HTTP-Methoden korrekt genutzt werden (siehe oben). Da dieser Standardwert sich aber erst in den letzten Jahren durchgesetzt hat, ist das explizite Setzen des Attributs noch notwendig.
Falls explizit stark veraltete (unsichere) Browser verwendet werden, müssen jedoch zusätzlich weitere Sicherheitsvorkehrungen (wie CSRF-Tokens) getroffen werden.
Außerdem bietet SameSite nur Schutz, wenn es für einen Angreifer nicht möglich ist, diesen unter derselben eTLD+1 (also dem Domainteil bis ein Level vor einer in der Public Suffix List festgelegten Endung z. B. „example.org“ bei „test.example.org“) zu hosten. Wären beispielsweise GitHub Pages nicht auf „github.io“, sondern auf „github.com“ gehostet, würde das SameSite-Attribut als Schutz für GitHub nicht ausreichen.
Synchronizer Token Pattern (STP)
Bei STP wird ein sogenanntes Page-Token, meistens eine Zahl oder eine Zeichenkette, in einem Hidden-Field auf der Seite eingebunden. <syntaxhighlight lang="html"> <input type="hidden" name="csrftoken" value="KbyUmhTLMpYj7CD2di7JKP1P3qmLlkPt" /> </syntaxhighlight>
Ohne weitere Lücken in der Webanwendung ist dieses Hidden-Field für den Angreifer nicht auslesbar. Insbesondere eine XSS-Schwachstelle kann jedoch den CSRF-Schutz aushebeln. Letzteres gilt selbst dann, wenn die XSS-Schwachstelle bloß in einer anderen Anwendung auf derselben Domain existiert.<ref>Christian Schneider: CSRF and Same-Origin XSS. 25. Februar 2012; abgerufen am 13. Dezember 2014.</ref>
Wie das Feld gesetzt wird, ist abhängig vom verwendeten Framework.
Beispiel in ASP.NET MVC
In ASP.NET MVC werden alle Forms automatisch mit einem Hidden-Field mit dem Anti-CSRF-Token versehen: <syntaxhighlight lang="csharp"> @using (Html.BeginForm("ChangePassword", "Manage")) {
// ...
} </syntaxhighlight> Alternativ lässt sich dieses auch manuell setzen: <syntaxhighlight lang="csharp"> <form action="/" method="post">
@Html.AntiForgeryToken()
</form> </syntaxhighlight>
Zudem gibt es in ASP.NET Core mit Microsoft.AspNetCore.Antiforgery die Möglichkeit das Token auch global zu konfigurieren:
<syntaxhighlight lang="csharp">
services.AddAntiforgery(options => {
options.FormFieldName = "csrftoken"; options.RequireSsl = true;
}); </syntaxhighlight>
Die Validierung des Tokens muss auf allen MVC-Controllern bzw. Methoden erfolgen, welche eine Nebenwirkung besitzen. Hierzu dienen drei Filter, welche als Attribute auf den entsprechenden Controllern bzw. Methoden gesetzt werden können:
| Attribut | Funktion |
|---|---|
| <syntaxhighlight lang="csharp" inline>[ValidateAntiForgeryToken]</syntaxhighlight> | Validiert das CSRF-Token |
| <syntaxhighlight lang="csharp" inline>[AutoValidateAntiforgeryToken]</syntaxhighlight> | Validiert das CSRF-Token für alle HTTP-Methoden ausgenommen GET, HEAD, OPTIONS, TRACE. Hierbei müssen die entsprechenden Methoden standardkonform implementiert werden.
|
| <syntaxhighlight lang="csharp" inline>[IgnoreAntiforgeryToken]</syntaxhighlight> | Keine Validierung |
Filter auf den Methoden überschreiben hierbei die Filter auf den Controllern.
Cookie
Das CSRF-Token kann auch in einem Cookie gespeichert werden. Dieses wird im HTTP-Header deklariert:
<syntaxhighlight lang="http">
Set-Cookie: Csrf-token=i8XNjC4b8KVok4uw5RftR38Wgp2BFwql; expires=Thu, 23-Jul-2017 10:25:33 GMT; Max-Age=31449600; Path=/
</syntaxhighlight>
Das Flag httpOnly ist hierbei nicht zulässig, da das Token im Browser durch ein JavaScript-Skript verarbeitet werden muss.
Bestimmte Frameworks erzwingen eine bestimmte Benennung für das CSRF-Cookie. Beispielsweise muss das Token für das $http-Service in Angular mit XSRF-TOKEN benannt werden. Anschließend wird das Token im X-XSRF-TOKEN-HTTP-Header übermittelt.<ref>{{#if:|{{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}| |}}}}{{#if:|{{{autor}}}: }}{{#if:|{{#if:Guarding against Cross-Site Request Forgery|[{{#invoke:Vorlage:Internetquelle|archivURL|1={{#invoke:URLutil|getNormalized|1={{{archiv-url}}}}}}} {{#invoke:Vorlage:Internetquelle|TitelFormat|titel=Guarding against Cross-Site Request Forgery}}]{{#if:| ({{{format}}})}}{{#if:| {{{titelerg}}}{{#invoke:Vorlage:Internetquelle|Endpunkt|titel={{{titelerg}}}}}}}}}|{{#if:https://angular.io/docs/ts/latest/guide/server-communication.html#!#xsrf%7C{{#if:{{#invoke:TemplUtl%7Cfaculty%7C}}%7C{{#invoke:Vorlage:Internetquelle%7CTitelFormat%7Ctitel={{#invoke:WLink%7CgetEscapedTitle%7C1=Guarding against Cross-Site Request Forgery}}}}|[{{#invoke:URLutil|getNormalized|1=https://angular.io/docs/ts/latest/guide/server-communication.html#!#xsrf}} {{#invoke:Vorlage:Internetquelle|TitelFormat|titel={{#invoke:WLink|getEscapedTitle|1=Guarding against Cross-Site Request Forgery}}}}]}}{{#if:| ({{{format}}}{{#if:Angular.ioGoogle{{#if: 2017-05-15 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}}}}
| )
| {{#if:{{#ifeq:en|de||{{#if:en|1}}}}| ;
| )}}}}}}{{#if:| {{{titelerg}}}{{#invoke:Vorlage:Internetquelle|Endpunkt|titel={{{titelerg}}}}}}}}}}}{{#if:https://angular.io/docs/ts/latest/guide/server-communication.html#!#xsrf%7C{{#if:{{#invoke:URLutil%7CisResourceURL%7C1=https://angular.io/docs/ts/latest/guide/server-communication.html#!#xsrf}}%7C%7C}}}}{{#if:Guarding against Cross-Site Request Forgery|{{#if:{{#invoke:WLink|isValidLinktext|1=Guarding against Cross-Site Request Forgery|lines=0}}||}}}}{{#if: Angular.io| In: {{#invoke:Vorlage:Internetquelle|TitelFormat|titel=Angular.io}}}}{{#if: Google| Google{{#if: |,|{{#if: 2017-05-15 | {{#if:{{#invoke:TemplUtl|faculty|}}||,}}}}}}}}{{#if: | {{#if:{{#invoke:DateTime|format|{{{datum}}}|noerror=1}}
|{{#invoke:DateTime|format|{{{datum}}}|T._Monat JJJJ}}
|{{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, datum={{{datum}}}|class=Zitationswartung}} }}{{#if: |,|{{#if: 2017-05-15 | {{#if:{{#invoke:TemplUtl|faculty|}}||,}}}}}}}}{{#if: | S. {{{seiten}}}{{#if: |,|{{#if: 2017-05-15 | {{#if:{{#invoke:TemplUtl|faculty|}}||,}}}}}}}}{{#if: {{#invoke:TemplUtl|faculty|}}| {{#if:Google|{{#if:|archiviert|ehemals}}|{{#if:|Archiviert|Ehemals}}}} {{#if:|vom|im}} Vorlage:Referrer{{#if:{{#invoke:TemplUtl|faculty|}}| (nicht mehr online verfügbar)}}{{#if: | am {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}|{{{archiv-datum}}}{{#if:438886||(?)}}}}}}{{#if: 2017-05-15|;}}}}{{#if: 2017-05-15| {{#if:Google{{#invoke:TemplUtl|faculty|}}|abgerufen|Abgerufen}} {{#switch: {{#invoke:Str|len| {{#invoke:DateTime|format| 2017-05-15 |ISO|noerror=1}} }}
|4=im Jahr
|7=im
|10=am
|#default={{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, abruf=2017-05-15|class=Zitationswartung}} }} {{#invoke:DateTime|format|2017-05-15|T._Monat JJJJ}}
| {{#invoke:TemplUtl|failure|1=Vorlage:Internetquelle | abruf=2026-MM-TT ist Pflichtparameter}} }}{{#if:{{#ifeq:en|de||{{#if:en|1}}}}|{{#if:Angular.ioGoogle{{#if: 2017-05-15 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}}}}
| (
| {{#if: | | (}}
}}{{#ifeq:{{#if:en|en|de}}|de||
{{#invoke:Multilingual|format|en|slang=!|split=[%s,]+|shift=m|separator=, }}}}{{#if: |{{#ifeq:{{#if:en|en|de}}|de||, }}{{{kommentar}}}}})}}{{#if: {{#if: 2017-05-15 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}} }}en|{{#if: |: {{
#if:
| „{{
#ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
| Vorlage:Str trim
| {{#invoke:Vorlage:lang|flat}}
}}“
| {{#ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
| „Vorlage:Str trim“
| {{#invoke:Text|quote
|1={{#if:
| {{#invoke:Vorlage:lang|flat}}
| {{#invoke:Vorlage:lang|flat}} }}
|2={{#if: {{#invoke:TemplUtl|faculty|}}|de-CH|de}}
|3=1}} }}
}}{{#if:
| (<templatestyles src="Person/styles.css" />{{#if: | : }}{{#if: | , deutsch: „“ }})
| {{#if:
| ({{#if: | , deutsch: „“ }})
| {{#if: | (deutsch: „“) }}
}}
}}{{#if: {{{zitat}}}
| {{#if:
| {{#if: {{{zitat}}}
| Vorlage:": Text= und 1= gleichzeitig, bzw. Pipe zu viel }} }}
| Vorlage:": Text= fehlt }}{{#if: | {{#if: {{#invoke:Text|unstrip|{{{ref}}}}}
| Vorlage:": Ungültiger Wert: ref=
| {{{ref}}} }}
}}|.{{#if:{{#invoke:TemplUtl|faculty|}}|{{#if:||{{#ifeq: | JaKeinHinweis |{{#switch:
|0|=Vorlage:Toter Link/Core{{#if: https://angular.io/docs/ts/latest/guide/server-communication.html#!#xsrf | {{#if: | [3] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }} }} | (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.) }}{{#switch: |no|0|= |#default={{#if: || }} }}{{#invoke:TemplatePar|check |opt = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: https://angular.io/docs/ts/latest/guide/server-communication.html#!#xsrf | {{#if:{{#invoke:URLutil|isWebURL|https://angular.io/docs/ts/latest/guide/server-communication.html#!#xsrf}} || {{#if: || }} }} | {{#if: | {{#if: || }} | {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: deadurl |checked|deadurl|= |#default= {{#if: || }} }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=https://angular.io/docs/ts/latest/guide/server-communication.html#!#xsrf Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. ) {{#if: | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }} }}Vorlage:Toter Link/Core{{#switch: |no|0|= |#default= {{#if: || }} }}{{#invoke:TemplatePar|check |all = inline= url= |opt = datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: https://angular.io/docs/ts/latest/guide/server-communication.html#!#xsrf | {{#if:{{#invoke:URLutil|isWebURL|https://angular.io/docs/ts/latest/guide/server-communication.html#!#xsrf}} || {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: deadurl |checked|deadurl|= |#default= {{#if: || }} }}[https://angular.io/docs/ts/latest/guide/server-communication.html#!#xsrf }}|{{#switch: |0|=Vorlage:Toter Link/Core{{#if: https://angular.io/docs/ts/latest/guide/server-communication.html#!#xsrf | {{#if: | [4] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: | {{#if: | | Vorlage:Toter Link/archivebot }} }} | (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.) }}{{#switch: |no|0|= |#default={{#if: || }} }}{{#invoke:TemplatePar|check |opt = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: https://angular.io/docs/ts/latest/guide/server-communication.html#!#xsrf | {{#if:{{#invoke:URLutil|isWebURL|https://angular.io/docs/ts/latest/guide/server-communication.html#!#xsrf}} || {{#if: || }} }} | {{#if: | {{#if: || }} | {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: |checked|deadurl|= |#default= {{#if: || }} }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=https://angular.io/docs/ts/latest/guide/server-communication.html#!#xsrf Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. ) {{#if: | {{#if: | | Vorlage:Toter Link/archivebot }} }}Vorlage:Toter Link/Core{{#switch: |no|0|= |#default= {{#if: || }} }}{{#invoke:TemplatePar|check |all = inline= url= |opt = datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: https://angular.io/docs/ts/latest/guide/server-communication.html#!#xsrf | {{#if:{{#invoke:URLutil|isWebURL|https://angular.io/docs/ts/latest/guide/server-communication.html#!#xsrf}} || {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: |checked|deadurl|= |#default= {{#if: || }} }}[https://angular.io/docs/ts/latest/guide/server-communication.html#!#xsrf }} }}}}}}}}}}{{#if:| {{#invoke:Vorlage:Internetquelle|archivBot|stamp={{{archiv-bot}}}|text={{#if:|Vorlage:Webarchiv/archiv-bot}}
}}}}{{#invoke:TemplatePar|check |all= url= titel= |opt= autor= hrsg= format= sprache= titelerg= werk= seiten= datum= abruf= zugriff= abruf-verborgen= archiv-url= archiv-datum= archiv-bot= kommentar= zitat= AT= CH= offline= |cat= {{#ifeq: 0 | 0 | Wikipedia:Vorlagenfehler/Vorlage:Internetquelle}} |template= Vorlage:Internetquelle |format=0 |preview=1 }}</ref>
Beispiel in ASP.NET MVC
Mit Microsoft.AspNetCore.Antiforgery lässt sich das Cookie wie folgt setzen:
<syntaxhighlight lang="csharp">
services.AddAntiforgery(options => {
options.CookieName = "Csrf-Token"; options.CookiePath = "/"; options.CookieDomain = "example.com"; options.RequireSsl = true;
}); </syntaxhighlight>
HTTP-Header
Eine weitere Methode, das Token zu übermitteln, ist der HTTP-Header. Hierzu wird der Header X-Csrf-Token verwendet. Allerdings verwenden einige Frameworks auch vom Standard abweichende Header.
| Header | Framework |
|---|---|
X-XSRF-TOKEN |
Angular |
X-Requested-With |
jQuery |
X-Requested-By |
Jersey |
Beispiel in ASP.NET MVC
Mit Microsoft.AspNetCore.Antiforgery lässt sich das Token im HTTP-Header wie folgt setzen:
<syntaxhighlight lang="csharp">
services.AddAntiforgery(options => {
options.HeaderName = "X-Csrf-Token"; options.RequireSsl = true;
}); </syntaxhighlight>
Behandlung von XMLHttpRequests
Bei alten Browsern, die XMLHttpRequests von verschiedenen Origin-Domänen zulassen, müssen XMLHttpRequests abgelehnt werden, wenn die im Origin-HTTP-Header eingetragene Domäne nicht Teil der zulässigen CORS-Domänen ist.
Clientseitig
Viele Webanwendungen, wie zum Beispiel auch die Wikipedia, bieten ihren Nutzern die Möglichkeit, dauerhaft angemeldet zu sein. Technisch wird hierbei in der Regel der in einem Cookie gespeicherte Sitzungsbezeichner am Ende einer Sitzung nicht gelöscht. Diese Komfortfunktion vergrößert aber auch die Angriffsfläche, da der Angreifer nicht mehr einen Zeitpunkt abzupassen braucht, zu dem sein Opfer an der Webanwendung angemeldet ist. Der Verzicht auf diese Funktion erhöht folglich die Hürden, die der Angreifer nehmen muss.
Unzulängliche Abwehrmaßnahmen
Einige Maßnahmen zur Unterbindung von CSRF-Angriffen reichen nicht aus, um einen hinreichenden Schutz zu gewährleisten. Sie sind bestenfalls dazu geeignet, die Hürde für den Angreifer etwas höher zu hängen, und wiegen den Betreiber einer Webanwendung schlimmstenfalls in Scheinsicherheit.
HTTP-Referrer-Prüfung
Die Prüfung des HTTP-Referrer-Headers bietet zwar einen gewissen Schutz vor reinen CSRF-Angriffen, da gefälschte Anfragen, die von einem Angreifer mittels Täuschung des Opfers auf einer externen Webseite ausgelöst wurden, zum Teil blockiert werden können. Die Webanwendung ist jedoch gut beraten, sich nicht auf den Schutz des Referrers zu verlassen: Viele Browser-Plugins erlauben es nämlich, Anfragen mit beliebigem Referrer abzusetzen, z. B. das früher weit verbreitete Adobe Flash<ref>{{#if:2013-01-04|{{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}| |}}}}{{#if:|{{{autor}}}: }}{{#if:https://web.archive.org/web/20130104232934/http://www.securiteam.com/securityreviews/5KP0M1FJ5E.html%7C{{#if:Forging HTTP Request Headers with Flash ActionScript|[{{#invoke:Vorlage:Internetquelle|archivURL|1={{#invoke:URLutil|getNormalized|1=https://web.archive.org/web/20130104232934/http://www.securiteam.com/securityreviews/5KP0M1FJ5E.html}}}} {{#invoke:Vorlage:Internetquelle|TitelFormat|titel=Forging HTTP Request Headers with Flash ActionScript}}]{{#if:| ({{{format}}})}}{{#if:| {{{titelerg}}}{{#invoke:Vorlage:Internetquelle|Endpunkt|titel={{{titelerg}}}}}}}}}|{{#if:http://www.securiteam.com/securityreviews/5KP0M1FJ5E.html%7C{{#if:{{#invoke:TemplUtl%7Cfaculty%7C1}}%7C{{#invoke:Vorlage:Internetquelle%7CTitelFormat%7Ctitel={{#invoke:WLink%7CgetEscapedTitle%7C1=Forging HTTP Request Headers with Flash ActionScript}}}}|[{{#invoke:URLutil|getNormalized|1=http://www.securiteam.com/securityreviews/5KP0M1FJ5E.html}} {{#invoke:Vorlage:Internetquelle|TitelFormat|titel={{#invoke:WLink|getEscapedTitle|1=Forging HTTP Request Headers with Flash ActionScript}}}}]}}{{#if:| ({{{format}}}{{#if:1securiteam.com2013-01-04https://web.archive.org/web/20130104232934/http://www.securiteam.com/securityreviews/5KP0M1FJ5E.html{{#if: 2022-01-24 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}}}}
| )
| {{#if:{{#ifeq:de|de||{{#if:|1}}}}| ;
| )}}}}}}{{#if:| {{{titelerg}}}{{#invoke:Vorlage:Internetquelle|Endpunkt|titel={{{titelerg}}}}}}}}}}}{{#if:http://www.securiteam.com/securityreviews/5KP0M1FJ5E.html%7C{{#if:{{#invoke:URLutil%7CisResourceURL%7C1=http://www.securiteam.com/securityreviews/5KP0M1FJ5E.html}}%7C%7C}}}}{{#if:Forging HTTP Request Headers with Flash ActionScript|{{#if:{{#invoke:WLink|isValidLinktext|1=Forging HTTP Request Headers with Flash ActionScript|lines=0}}||}}}}{{#if: securiteam.com| In: {{#invoke:Vorlage:Internetquelle|TitelFormat|titel=securiteam.com}}}}{{#if: | {{{hrsg}}}{{#if: 2013-01-04https://web.archive.org/web/20130104232934/http://www.securiteam.com/securityreviews/5KP0M1FJ5E.html%7C,%7C{{#if: 2022-01-24 | {{#if:{{#invoke:TemplUtl|faculty|}}||,}}}}}}}}{{#if: 2013-01-04| {{#if:{{#invoke:DateTime|format|2013-01-04|noerror=1}}
|{{#invoke:DateTime|format|2013-01-04|T._Monat JJJJ}}
|{{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, datum=2013-01-04|class=Zitationswartung}} }}{{#if: https://web.archive.org/web/20130104232934/http://www.securiteam.com/securityreviews/5KP0M1FJ5E.html%7C,%7C{{#if: 2022-01-24 | {{#if:{{#invoke:TemplUtl|faculty|}}||,}}}}}}}}{{#if: | S. {{{seiten}}}{{#if: https://web.archive.org/web/20130104232934/http://www.securiteam.com/securityreviews/5KP0M1FJ5E.html%7C,%7C{{#if: 2022-01-24 | {{#if:{{#invoke:TemplUtl|faculty|}}||,}}}}}}}}{{#if: https://web.archive.org/web/20130104232934/http://www.securiteam.com/securityreviews/5KP0M1FJ5E.html{{#invoke:TemplUtl%7Cfaculty%7C1}}%7C+{{#if:2013-01-04%7C{{#if:https://web.archive.org/web/20130104232934/http://www.securiteam.com/securityreviews/5KP0M1FJ5E.html%7Carchiviert%7Cehemals}}%7C{{#if:https://web.archive.org/web/20130104232934/http://www.securiteam.com/securityreviews/5KP0M1FJ5E.html%7CArchiviert%7CEhemals}}}}+{{#if:https://web.archive.org/web/20130104232934/http://www.securiteam.com/securityreviews/5KP0M1FJ5E.html%7Cvom%7Cim}}+Vorlage:Referrer{{#if:{{#invoke:TemplUtl|faculty|1}}| (nicht mehr online verfügbar)}}{{#if: 2013-01-04| am {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}|2013-01-04{{#if:438886||(?)}}}}}}{{#if: 2022-01-24|;}}}}{{#if: 2022-01-24| {{#if:2013-01-04https://web.archive.org/web/20130104232934/http://www.securiteam.com/securityreviews/5KP0M1FJ5E.html{{#invoke:TemplUtl%7Cfaculty%7C1}}%7Cabgerufen%7CAbgerufen}} {{#switch: {{#invoke:Str|len| {{#invoke:DateTime|format| 2022-01-24 |ISO|noerror=1}} }}
|4=im Jahr
|7=im
|10=am
|#default={{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, abruf=2022-01-24|class=Zitationswartung}} }} {{#invoke:DateTime|format|2022-01-24|T._Monat JJJJ}}
| {{#invoke:TemplUtl|failure|1=Vorlage:Internetquelle | abruf=2026-MM-TT ist Pflichtparameter}} }}{{#if:{{#ifeq:de|de||{{#if:|1}}}}|{{#if:1securiteam.com2013-01-04https://web.archive.org/web/20130104232934/http://www.securiteam.com/securityreviews/5KP0M1FJ5E.html{{#if: 2022-01-24 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}}}}
| (
| {{#if: | | (}}
}}{{#ifeq:{{#if:de|de|de}}|de||
{{#invoke:Multilingual|format|{{{sprache}}}|slang=!|split=[%s,]+|shift=m|separator=, }}}}{{#if: |{{#ifeq:{{#if:de|de|de}}|de||, }}{{{kommentar}}}}})}}{{#if: 2013-01-04https://web.archive.org/web/20130104232934/http://www.securiteam.com/securityreviews/5KP0M1FJ5E.html{{#if: 2022-01-24 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}} }}|{{#if: |: {{
#if:
| „{{
#ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
| Vorlage:Str trim
| {{#invoke:Vorlage:lang|flat}}
}}“
| {{#ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
| „Vorlage:Str trim“
| {{#invoke:Text|quote
|1={{#if:
| {{#invoke:Vorlage:lang|flat}}
| {{#invoke:Vorlage:lang|flat}} }}
|2={{#if: {{#invoke:TemplUtl|faculty|}}|de-CH|de}}
|3=1}} }}
}}{{#if:
| (<templatestyles src="Person/styles.css" />{{#if: | : }}{{#if: | , deutsch: „“ }})
| {{#if:
| ({{#if: | , deutsch: „“ }})
| {{#if: | (deutsch: „“) }}
}}
}}{{#if: {{{zitat}}}
| {{#if:
| {{#if: {{{zitat}}}
| Vorlage:": Text= und 1= gleichzeitig, bzw. Pipe zu viel }} }}
| Vorlage:": Text= fehlt }}{{#if: | {{#if: {{#invoke:Text|unstrip|{{{ref}}}}}
| Vorlage:": Ungültiger Wert: ref=
| {{{ref}}} }}
}}|.{{#if:{{#invoke:TemplUtl|faculty|1}}|{{#if:https://web.archive.org/web/20130104232934/http://www.securiteam.com/securityreviews/5KP0M1FJ5E.html%7C%7C{{#ifeq: 1 | JaKeinHinweis |{{#switch:
|0|=Vorlage:Toter Link/Core{{#if: http://www.securiteam.com/securityreviews/5KP0M1FJ5E.html | {{#if: | [5] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }} }} | (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.) }}{{#switch: |no|0|= |#default={{#if: || }} }}{{#invoke:TemplatePar|check |opt = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: http://www.securiteam.com/securityreviews/5KP0M1FJ5E.html | {{#if:{{#invoke:URLutil|isWebURL|http://www.securiteam.com/securityreviews/5KP0M1FJ5E.html}} || {{#if: || }} }} | {{#if: | {{#if: || }} | {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: deadurl |checked|deadurl|= |#default= {{#if: || }} }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=http://www.securiteam.com/securityreviews/5KP0M1FJ5E.html Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. ) {{#if: | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }} }}Vorlage:Toter Link/Core{{#switch: |no|0|= |#default= {{#if: || }} }}{{#invoke:TemplatePar|check |all = inline= url= |opt = datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: http://www.securiteam.com/securityreviews/5KP0M1FJ5E.html | {{#if:{{#invoke:URLutil|isWebURL|http://www.securiteam.com/securityreviews/5KP0M1FJ5E.html}} || {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: deadurl |checked|deadurl|= |#default= {{#if: || }} }}[http://www.securiteam.com/securityreviews/5KP0M1FJ5E.html }}|{{#switch: |0|=Vorlage:Toter Link/Core{{#if: http://www.securiteam.com/securityreviews/5KP0M1FJ5E.html | {{#if: | [6] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: | {{#if: | | Vorlage:Toter Link/archivebot }} }} | (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.) }}{{#switch: |no|0|= |#default={{#if: || }} }}{{#invoke:TemplatePar|check |opt = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: http://www.securiteam.com/securityreviews/5KP0M1FJ5E.html | {{#if:{{#invoke:URLutil|isWebURL|http://www.securiteam.com/securityreviews/5KP0M1FJ5E.html}} || {{#if: || }} }} | {{#if: | {{#if: || }} | {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: |checked|deadurl|= |#default= {{#if: || }} }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=http://www.securiteam.com/securityreviews/5KP0M1FJ5E.html Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. ) {{#if: | {{#if: | | Vorlage:Toter Link/archivebot }} }}Vorlage:Toter Link/Core{{#switch: |no|0|= |#default= {{#if: || }} }}{{#invoke:TemplatePar|check |all = inline= url= |opt = datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: http://www.securiteam.com/securityreviews/5KP0M1FJ5E.html | {{#if:{{#invoke:URLutil|isWebURL|http://www.securiteam.com/securityreviews/5KP0M1FJ5E.html}} || {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: |checked|deadurl|= |#default= {{#if: || }} }}[http://www.securiteam.com/securityreviews/5KP0M1FJ5E.html }} }}}}}}}}}}{{#if:| {{#invoke:Vorlage:Internetquelle|archivBot|stamp={{{archiv-bot}}}|text={{#if:https://web.archive.org/web/20130104232934/http://www.securiteam.com/securityreviews/5KP0M1FJ5E.html%7CVorlage:Webarchiv/archiv-bot}}
}}}}{{#invoke:TemplatePar|check |all= url= titel= |opt= autor= hrsg= format= sprache= titelerg= werk= seiten= datum= abruf= zugriff= abruf-verborgen= archiv-url= archiv-datum= archiv-bot= kommentar= zitat= AT= CH= offline= |cat= {{#ifeq: 0 | 0 | Wikipedia:Vorlagenfehler/Vorlage:Internetquelle}} |template= Vorlage:Internetquelle |format=0 |preview=1 }}</ref>. Außerdem können Benutzer oder auch Proxy-Server aus Datenschutzgründen das Übertragen des Referrers unterbinden oder gezielt einen anderen Wert eintragen, wodurch die Web-Anwendung nicht mehr allen legitimen Anwendern offensteht (false positives). Aus Gründen der Benutzbarkeit einer Webanwendung sollte man den Referrer-Header grundsätzlich nicht für eine HTTP-Anfrage verwenden.
Literatur
- Norman Hardy: The Confused Deputy: (or why capabilities might have been invented). In: ACM SIGOPS Operating Systems Review, Oktober 1988, Volume 22, Issue 4.
Weblinks
- <templatestyles src="Webarchiv/styles.css" />{{#if:20190716105530
| {{#ifeq: 20190716105530 | *
| {{#if: CSRF Angriffe (Teil 2): Schwache Gegenmaßnahmen. | {{#invoke:WLink|getEscapedTitle|CSRF Angriffe (Teil 2): Schwache Gegenmaßnahmen.}} | {{#invoke:Webarchiv|getdomain|https://www.cubespotter.de/cubespotter/csrf-attacks-teil2-schwache-gegenmassnahmen/}} }} (Archivversionen)
| {{#iferror: {{#time: j. F Y|20190716105530}}
| {{#if: || }}Der Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
| {{#if: CSRF Angriffe (Teil 2): Schwache Gegenmaßnahmen. | {{#invoke:WLink|getEscapedTitle|CSRF Angriffe (Teil 2): Schwache Gegenmaßnahmen.}} | {{#invoke:Webarchiv|getdomain|https://www.cubespotter.de/cubespotter/csrf-attacks-teil2-schwache-gegenmassnahmen/}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y|20190716105530}} im Internet Archive{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
}}
| {{#if:
| {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
| {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
| 16= {{#if: CSRF Angriffe (Teil 2): Schwache Gegenmaßnahmen. | {{#invoke:WLink|getEscapedTitle|CSRF Angriffe (Teil 2): Schwache Gegenmaßnahmen.}} | {{#invoke:Webarchiv|getdomain|https://www.cubespotter.de/cubespotter/csrf-attacks-teil2-schwache-gegenmassnahmen/}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| 9 = {{#if: CSRF Angriffe (Teil 2): Schwache Gegenmaßnahmen. | {{#invoke:WLink|getEscapedTitle|CSRF Angriffe (Teil 2): Schwache Gegenmaßnahmen.}} | {{#invoke:Webarchiv|getdomain|https://www.cubespotter.de/cubespotter/csrf-attacks-teil2-schwache-gegenmassnahmen/}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!{{#if: || }}
}}
| c|{{{webciteID}}}}} {{#if: CSRF Angriffe (Teil 2): Schwache Gegenmaßnahmen. | {{#invoke:WLink|getEscapedTitle|CSRF Angriffe (Teil 2): Schwache Gegenmaßnahmen.}} | {{#invoke:Webarchiv|getdomain|https://www.cubespotter.de/cubespotter/csrf-attacks-teil2-schwache-gegenmassnahmen/}} }} ({{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
| {{#if:
| Vorlage:Webarchiv/Today
| {{#if:
| Vorlage:Webarchiv/Generisch
| {{#if: CSRF Angriffe (Teil 2): Schwache Gegenmaßnahmen. | {{#invoke:WLink|getEscapedTitle|CSRF Angriffe (Teil 2): Schwache Gegenmaßnahmen.}} | {{#invoke:Webarchiv|getdomain|https://www.cubespotter.de/cubespotter/csrf-attacks-teil2-schwache-gegenmassnahmen/}} }}
}}}}}}}}{{#if:
| Vorlage:Webarchiv/archiv-bot
}}{{#invoke:TemplatePar|check
|all = url=
|opt = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
|cat = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
|errNS = 0
|template = Vorlage:Webarchiv
|format = *
|preview = 1
}}{{#ifexpr: {{#if:20190716105530|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
}}{{#if:
| {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
| web.archive.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}}
| webcitation.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}}
| archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
}}{{#if:
| {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
| }}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
}}
| {{#if:
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
}}
}}{{#if:{{#invoke:URLutil|isHostPathResource|https://www.cubespotter.de/cubespotter/csrf-attacks-teil2-schwache-gegenmassnahmen/}}
|| {{#if: || }}
}}{{#if: CSRF Angriffe (Teil 2): Schwache Gegenmaßnahmen.
| {{#if: {{#invoke:WLink|isBracketedLink|CSRF Angriffe (Teil 2): Schwache Gegenmaßnahmen.}}
| {{#if: || }}
}}
| {{#if: || }}
}}{{#switch:
|addlarchives|addlpages= {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
}}{{#ifeq: {{#invoke:Str|find|https://www.cubespotter.de/cubespotter/csrf-attacks-teil2-schwache-gegenmassnahmen/%7Carchiv}} |-1
|| {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|https://www.cubespotter.de/cubespotter/csrf-attacks-teil2-schwache-gegenmassnahmen/%7C4}}%7Chttp}} |-1
|| {{#switch: {{#invoke:Webarchiv|getdomain|https://www.cubespotter.de/cubespotter/csrf-attacks-teil2-schwache-gegenmassnahmen/ }}
| abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org =
| #default = {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
}}
}}
}} cubespotter.de, Juni 2017.
- Querschau der Risiken. Heise, 2010.
- <templatestyles src="Webarchiv/styles.css" />{{#if:20190216182339
| {{#ifeq: 20190216182339 | *
| {{#if: OWASP Top 10-2017. | {{#invoke:WLink|getEscapedTitle|OWASP Top 10-2017.}} | {{#invoke:Webarchiv|getdomain|https://www.owasp.org/images/9/90/OWASP_Top_10-2017_de_V1.0.pdf}} }} (Archivversionen)
| {{#iferror: {{#time: j. F Y|20190216182339}}
| {{#if: || }}Der Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
| {{#if: OWASP Top 10-2017. | {{#invoke:WLink|getEscapedTitle|OWASP Top 10-2017.}} | {{#invoke:Webarchiv|getdomain|https://www.owasp.org/images/9/90/OWASP_Top_10-2017_de_V1.0.pdf}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y|20190216182339}} im Internet Archive{{#if: PDF | ; PDF }}{{#ifeq: | [] | ] | ) }}
}}
}}
| {{#if:
| {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
| {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
| 16= {{#if: OWASP Top 10-2017. | {{#invoke:WLink|getEscapedTitle|OWASP Top 10-2017.}} | {{#invoke:Webarchiv|getdomain|https://www.owasp.org/images/9/90/OWASP_Top_10-2017_de_V1.0.pdf}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: PDF | ; PDF }}{{#ifeq: | [] | ] | ) }}
| 9 = {{#if: OWASP Top 10-2017. | {{#invoke:WLink|getEscapedTitle|OWASP Top 10-2017.}} | {{#invoke:Webarchiv|getdomain|https://www.owasp.org/images/9/90/OWASP_Top_10-2017_de_V1.0.pdf}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: PDF | ; PDF }}{{#ifeq: | [] | ] | ) }}
| #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!{{#if: || }}
}}
| c|{{{webciteID}}}}} {{#if: OWASP Top 10-2017. | {{#invoke:WLink|getEscapedTitle|OWASP Top 10-2017.}} | {{#invoke:Webarchiv|getdomain|https://www.owasp.org/images/9/90/OWASP_Top_10-2017_de_V1.0.pdf}} }} ({{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if: PDF | ; PDF }}{{#ifeq: | [] | ] | ) }}
}}
| {{#if:
| Vorlage:Webarchiv/Today
| {{#if:
| Vorlage:Webarchiv/Generisch
| {{#if: OWASP Top 10-2017. | {{#invoke:WLink|getEscapedTitle|OWASP Top 10-2017.}} | {{#invoke:Webarchiv|getdomain|https://www.owasp.org/images/9/90/OWASP_Top_10-2017_de_V1.0.pdf}} }}
}}}}}}}}{{#if:
| Vorlage:Webarchiv/archiv-bot
}}{{#invoke:TemplatePar|check
|all = url=
|opt = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
|cat = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
|errNS = 0
|template = Vorlage:Webarchiv
|format = *
|preview = 1
}}{{#ifexpr: {{#if:20190216182339|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
}}{{#if:
| {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
| web.archive.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}}
| webcitation.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}}
| archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
}}{{#if:
| {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
| }}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
}}
| {{#if:
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
}}
}}{{#if:{{#invoke:URLutil|isHostPathResource|https://www.owasp.org/images/9/90/OWASP_Top_10-2017_de_V1.0.pdf}}
|| {{#if: || }}
}}{{#if: OWASP Top 10-2017.
| {{#if: {{#invoke:WLink|isBracketedLink|OWASP Top 10-2017.}}
| {{#if: || }}
}}
| {{#if: || }}
}}{{#switch: PDF
|addlarchives|addlpages= {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
}}{{#ifeq: {{#invoke:Str|find|https://www.owasp.org/images/9/90/OWASP_Top_10-2017_de_V1.0.pdf%7Carchiv}} |-1
|| {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|https://www.owasp.org/images/9/90/OWASP_Top_10-2017_de_V1.0.pdf%7C4}}%7Chttp}} |-1
|| {{#switch: {{#invoke:Webarchiv|getdomain|https://www.owasp.org/images/9/90/OWASP_Top_10-2017_de_V1.0.pdf }}
| abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org =
| #default = {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
}}
}}
}} Open Web Application Security Project.
- Cross-Site Request Forgery (CSRF) Prevention Cheat Sheet. OWASP.
- National Vulnerability Database web site. nist.gov
- Security tips for Web developers. squarefree.com (englisch).
- <templatestyles src="Webarchiv/styles.css" />{{#if:20170315004535
| {{#ifeq: 20170315004535 | *
| {{#if: Maßnahmenkatalog und Best Practices für die Sicherheit von Webanwendungen. | {{#invoke:WLink|getEscapedTitle|Maßnahmenkatalog und Best Practices für die Sicherheit von Webanwendungen.}} | {{#invoke:Webarchiv|getdomain|https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/Studien/WebSec/WebSec.pdf?__blob=publicationFile&v=1}} }} (Archivversionen)
| {{#iferror: {{#time: j. F Y|20170315004535}}
| {{#if: || }}Der Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
| {{#if: Maßnahmenkatalog und Best Practices für die Sicherheit von Webanwendungen. | {{#invoke:WLink|getEscapedTitle|Maßnahmenkatalog und Best Practices für die Sicherheit von Webanwendungen.}} | {{#invoke:Webarchiv|getdomain|https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/Studien/WebSec/WebSec.pdf?__blob=publicationFile&v=1}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y|20170315004535}} im Internet Archive{{#if: PDF; 922 kB | ; PDF; 922 kB }}{{#ifeq: | [] | ] | ) }}
}}
}}
| {{#if:
| {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
| {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
| 16= {{#if: Maßnahmenkatalog und Best Practices für die Sicherheit von Webanwendungen. | {{#invoke:WLink|getEscapedTitle|Maßnahmenkatalog und Best Practices für die Sicherheit von Webanwendungen.}} | {{#invoke:Webarchiv|getdomain|https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/Studien/WebSec/WebSec.pdf?__blob=publicationFile&v=1}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: PDF; 922 kB | ; PDF; 922 kB }}{{#ifeq: | [] | ] | ) }}
| 9 = {{#if: Maßnahmenkatalog und Best Practices für die Sicherheit von Webanwendungen. | {{#invoke:WLink|getEscapedTitle|Maßnahmenkatalog und Best Practices für die Sicherheit von Webanwendungen.}} | {{#invoke:Webarchiv|getdomain|https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/Studien/WebSec/WebSec.pdf?__blob=publicationFile&v=1}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: PDF; 922 kB | ; PDF; 922 kB }}{{#ifeq: | [] | ] | ) }}
| #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!{{#if: || }}
}}
| c|{{{webciteID}}}}} {{#if: Maßnahmenkatalog und Best Practices für die Sicherheit von Webanwendungen. | {{#invoke:WLink|getEscapedTitle|Maßnahmenkatalog und Best Practices für die Sicherheit von Webanwendungen.}} | {{#invoke:Webarchiv|getdomain|https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/Studien/WebSec/WebSec.pdf?__blob=publicationFile&v=1}} }} ({{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if: PDF; 922 kB | ; PDF; 922 kB }}{{#ifeq: | [] | ] | ) }}
}}
| {{#if:
| Vorlage:Webarchiv/Today
| {{#if:
| Vorlage:Webarchiv/Generisch
| {{#if: Maßnahmenkatalog und Best Practices für die Sicherheit von Webanwendungen. | {{#invoke:WLink|getEscapedTitle|Maßnahmenkatalog und Best Practices für die Sicherheit von Webanwendungen.}} | {{#invoke:Webarchiv|getdomain|https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/Studien/WebSec/WebSec.pdf?__blob=publicationFile&v=1}} }}
}}}}}}}}{{#if:
| Vorlage:Webarchiv/archiv-bot
}}{{#invoke:TemplatePar|check
|all = url=
|opt = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
|cat = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
|errNS = 0
|template = Vorlage:Webarchiv
|format = *
|preview = 1
}}{{#ifexpr: {{#if:20170315004535|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
}}{{#if:
| {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
| web.archive.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}}
| webcitation.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}}
| archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
}}{{#if:
| {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
| }}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
}}
| {{#if:
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
}}
}}{{#if:{{#invoke:URLutil|isHostPathResource|https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/Studien/WebSec/WebSec.pdf?__blob=publicationFile&v=1}}
|| {{#if: || }}
}}{{#if: Maßnahmenkatalog und Best Practices für die Sicherheit von Webanwendungen.
| {{#if: {{#invoke:WLink|isBracketedLink|Maßnahmenkatalog und Best Practices für die Sicherheit von Webanwendungen.}}
| {{#if: || }}
}}
| {{#if: || }}
}}{{#switch: PDF; 922 kB
|addlarchives|addlpages= {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
}}{{#ifeq: {{#invoke:Str|find|https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/Studien/WebSec/WebSec.pdf?__blob=publicationFile&v=1%7Carchiv}} |-1
|| {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/Studien/WebSec/WebSec.pdf?__blob=publicationFile&v=1%7C4}}%7Chttp}} |-1
|| {{#switch: {{#invoke:Webarchiv|getdomain|https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/Studien/WebSec/WebSec.pdf?__blob=publicationFile&v=1 }}
| abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org =
| #default = {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
}}
}}
}} Bundesamt für Sicherheit in der Informationstechnik (BSI).
- Session-Angriffe – eine Analyse. erich-kachel.de
- <templatestyles src="Webarchiv/styles.css" />{{#if:20140711152711
| {{#ifeq: 20140711152711 | *
| {{#if: CSRF-Angriffe auf Router und Webanwendungen. | {{#invoke:WLink|getEscapedTitle|CSRF-Angriffe auf Router und Webanwendungen.}} | {{#invoke:Webarchiv|getdomain|http://www.tecchannel.de/webtechnik/webserver/1993878/csrf_attacke_auf_dsl_router_und_web_anwendungen/index.html}} }} (Archivversionen)
| {{#iferror: {{#time: j. F Y|20140711152711}}
| {{#if: || }}Der Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
| {{#if: CSRF-Angriffe auf Router und Webanwendungen. | {{#invoke:WLink|getEscapedTitle|CSRF-Angriffe auf Router und Webanwendungen.}} | {{#invoke:Webarchiv|getdomain|http://www.tecchannel.de/webtechnik/webserver/1993878/csrf_attacke_auf_dsl_router_und_web_anwendungen/index.html}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y|20140711152711}} im Internet Archive{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
}}
| {{#if:
| {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
| {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
| 16= {{#if: CSRF-Angriffe auf Router und Webanwendungen. | {{#invoke:WLink|getEscapedTitle|CSRF-Angriffe auf Router und Webanwendungen.}} | {{#invoke:Webarchiv|getdomain|http://www.tecchannel.de/webtechnik/webserver/1993878/csrf_attacke_auf_dsl_router_und_web_anwendungen/index.html}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| 9 = {{#if: CSRF-Angriffe auf Router und Webanwendungen. | {{#invoke:WLink|getEscapedTitle|CSRF-Angriffe auf Router und Webanwendungen.}} | {{#invoke:Webarchiv|getdomain|http://www.tecchannel.de/webtechnik/webserver/1993878/csrf_attacke_auf_dsl_router_und_web_anwendungen/index.html}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!{{#if: || }}
}}
| c|{{{webciteID}}}}} {{#if: CSRF-Angriffe auf Router und Webanwendungen. | {{#invoke:WLink|getEscapedTitle|CSRF-Angriffe auf Router und Webanwendungen.}} | {{#invoke:Webarchiv|getdomain|http://www.tecchannel.de/webtechnik/webserver/1993878/csrf_attacke_auf_dsl_router_und_web_anwendungen/index.html}} }} ({{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
| {{#if:
| Vorlage:Webarchiv/Today
| {{#if:
| Vorlage:Webarchiv/Generisch
| {{#if: CSRF-Angriffe auf Router und Webanwendungen. | {{#invoke:WLink|getEscapedTitle|CSRF-Angriffe auf Router und Webanwendungen.}} | {{#invoke:Webarchiv|getdomain|http://www.tecchannel.de/webtechnik/webserver/1993878/csrf_attacke_auf_dsl_router_und_web_anwendungen/index.html}} }}
}}}}}}}}{{#if:
| Vorlage:Webarchiv/archiv-bot
}}{{#invoke:TemplatePar|check
|all = url=
|opt = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
|cat = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
|errNS = 0
|template = Vorlage:Webarchiv
|format = *
|preview = 1
}}{{#ifexpr: {{#if:20140711152711|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
}}{{#if:
| {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
| web.archive.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}}
| webcitation.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}}
| archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
}}{{#if:
| {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
| }}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
}}
| {{#if:
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
}}
}}{{#if:{{#invoke:URLutil|isHostPathResource|http://www.tecchannel.de/webtechnik/webserver/1993878/csrf_attacke_auf_dsl_router_und_web_anwendungen/index.html}}
|| {{#if: || }}
}}{{#if: CSRF-Angriffe auf Router und Webanwendungen.
| {{#if: {{#invoke:WLink|isBracketedLink|CSRF-Angriffe auf Router und Webanwendungen.}}
| {{#if: || }}
}}
| {{#if: || }}
}}{{#switch:
|addlarchives|addlpages= {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
}}{{#ifeq: {{#invoke:Str|find|http://www.tecchannel.de/webtechnik/webserver/1993878/csrf_attacke_auf_dsl_router_und_web_anwendungen/index.html%7Carchiv}} |-1
|| {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://www.tecchannel.de/webtechnik/webserver/1993878/csrf_attacke_auf_dsl_router_und_web_anwendungen/index.html%7C4}}%7Chttp}} |-1
|| {{#switch: {{#invoke:Webarchiv|getdomain|http://www.tecchannel.de/webtechnik/webserver/1993878/csrf_attacke_auf_dsl_router_und_web_anwendungen/index.html }}
| abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org =
| #default = {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
}}
}}
}} TecChannel, 2009.
- Vorlage:RFC-Internet
- The Cross-site Request Forgery FAQ. cgisecurity.com
- Sverre Huseby: Client Side Trojans. shh.thathost.com
- Foiling Cross-Site Attacks. shiflett.org, 2003.
- Concerns over the name “Session Riding”. shiflett.org/blog, 2005
- Do I still need CSRF protection when SameSite is set to Lax? security.stackexchange.com, 2021.
- Using HTTP cookies developer.mozilla.org/en-US/docs/, 2024.
- SameSite-Attribut: Google Chrome drängt auf sichere Cookies www.heise.de/news, 2020.
Einzelnachweise
<references />
- Wikipedia:Vorlagenfehler/Parameter:URL
- Wikipedia:Vorlagenfehler/Parameter:Linktext
- Wikipedia:Vorlagenfehler/Parameter:Datum
- Wikipedia:Vorlagenfehler/Vorlage:"
- Wikipedia:Weblink offline fix-attempted
- Wikipedia:Vorlagenfehler/Vorlage:Toter Link
- Wikipedia:Vorlagenfehler/Vorlage:Toter Link/URL fehlt
- Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
- Wikipedia:Vorlagenfehler/Vorlage:Webarchiv/Archiv-URL
- Wikipedia:Vorlagenfehler/Vorlage:Webarchiv/Linktext fehlt
- Sicherheitslücke
- Web-Entwicklung