This site is the archived OWASP Foundation Wiki and is no longer accepting Account Requests.
To view the new OWASP Foundation website, please visit https://owasp.org
Difference between revisions of "Germany/Projekte/Top 10 fuer Entwickler-2013/A8-Cross-Site Request Forgery (CSRF)"
(Template für Option 3: JSF vorbereitet) |
m (Bugfix) |
||
(13 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | {{ | + | {{Top_10_2013_DeveloperEdition:TopTemplate |
− | |useprev= | + | |useprev=2013PrevLinkDeveloperEdition |
− | |usenext= | + | |usenext=2013NextLinkDeveloperEdition |
− | |prev= | + | |prev=A7-{{Top_10_2010:ByTheNumbers |
− | | | + | |7 |
− | | | + | |year=2013 |
− | | | + | |language=de}} |
− | |next= | + | |next=A9-{{Top_10_2010:ByTheNumbers |
− | | | + | |9 |
− | |language=de | + | |year=2013 |
− | + | |language=de}} | |
+ | |year=2013 | ||
+ | |language=de | ||
}} | }} | ||
− | |||
+ | {{Top_10_2010:SubsectionColoredTemplate | ||
+ | |A8 Cross-Site Request Forgery (CSRF, XSRF, Session Riding) | ||
+ | ||year=2013 | ||
+ | }} | ||
− | + | {{Top_10_2010:SummaryTableHeaderBeginTemplate|type=images|year=2013|language=de}} | |
− | + | {{Top_10:SummaryTableTemplate|exploitability=2|prevalence=2|detectability=1|impact=2|language=de|year=2013}} | |
− | {{ | + | {{Top_10_2010:SummaryTableHeaderEndTemplate|year=2013|language=de}} |
− | {{ | + | <td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}>Jeder, der einem Browser Inhalte unterschieben kann, die nicht beabsichtigte Requests auslösen. Hierfür kommt jede Website oder jede HTML-Quelle in Betracht, die der Nutzer verwendet.</td> |
− | + | <td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}>Durch Image-Tags, XSS oder andere Techniken löst das Opfer unbeabsichtigt einen gefälschten HTTP-Request für eine Anwendung aus. <u>Falls der Nutzer authentifiziert ist</u>, wird dieser Angriff Erfolg haben.</td> | |
− | + | <td colspan=2 {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}>[[CSRF]] nutzt aus, dass es bei den meisten Webanwendungen möglich ist, die Inhalte eines Requests für eine bestimmte Aktion vorherzusagen. | |
− | {{Top_10_2010: | + | Da Browser Informationen zum Session-Management automatisch mitsenden, kann ein Angreifer gefälschte Requests auf bösartigen Websites hinterlegen, die von autorisierten und gewollten Requests nicht unterschieden werden können. |
− | |||
− | <td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}>Jeder, der einem | ||
− | <td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}>Durch Image-Tags, XSS oder andere Techniken löst das Opfer unbeabsichtigt einen gefälschten HTTP-Request für eine Anwendung aus. <u>Falls der Nutzer | ||
− | <td colspan=2 {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}>[[CSRF]] | ||
− | |||
− | Da Browser Informationen zum Session-Management automatisch mitsenden, kann ein Angreifer gefälschte Requests auf bösartigen Websites hinterlegen, die von | ||
CSRF-Schwächen sind leicht durch Penetrationstests oder Quellcode-Analysen auffindbar.</td> | CSRF-Schwächen sind leicht durch Penetrationstests oder Quellcode-Analysen auffindbar.</td> | ||
− | <td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}> | + | <td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}>Angreifer können über den Browser des Opfers alle zustandsändernden Aktionen auslösen, für das es berechtigt ist, z.B. Ändern von Daten, Aufgeben von Bestellungen, Logout und Login, usw.</td> |
− | <td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}>Betrachten Sie den Geschäftswert der betroffenen Daten oder Funktionen. Es bleibt die Unsicherheit, ob der Nutzer die Aktion ausführen wollte. | + | <td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}> |
− | + | Betrachten Sie den Geschäftswert der betroffenen Daten oder Funktionen. Es bleibt die Unsicherheit, ob der Nutzer die Aktion ausführen wollte. | |
Bedenken Sie mögliche Auswirkungen auf Ihre Reputation.</td> | Bedenken Sie mögliche Auswirkungen auf Ihre Reputation.</td> | ||
{{Top_10_2010:SummaryTableEndTemplate}} | {{Top_10_2010:SummaryTableEndTemplate}} | ||
− | {{Top_10:SubsectionTableBeginTemplate|type=main}} {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=example|position=firstLeft|risk= | + | {{Top_10:SubsectionTableBeginTemplate|type=main}} {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=example|position=firstLeft|risk=8|year=2013|language=de}} |
− | Die Anwendung erlaubt es einem Benutzer, einen '''zustandsändernden Request''' auszulösen, der kein geheimes Token beinhaltet, wie z.B.: | + | Die Anwendung erlaubt es einem Benutzer, einen '''zustandsändernden Request''' auszulösen, der kein geheimes Token beinhaltet, wie z.B.: |
+ | {{Top_10_2010:ExampleBeginTemplate|year=2013}} | ||
+ | '''<nowiki>http://example.com/app/transferFunds?amount=1500&destinationAccount=4673243243</nowiki>''' | ||
+ | {{Top_10_2010:ExampleEndTemplate}} | ||
− | + | Dadurch kann ein Angreifer einen Request erzeugen, der Geld vom Konto des Opfers auf das Konto des Angreifers transferiert. Diesen bettet der Angreifer „unsichtbar“ in ein Image-Tag oder ein Iframe ein und hinterlegt ihn in einer beliebigen Website: | |
− | + | {{Top_10_2010:ExampleBeginTemplate|year=2013}} | |
− | Dadurch kann ein Angreifer einen Request erzeugen, der Geld vom Konto des Opfers auf das Konto des Angreifers transferiert. Diesen bettet | + | '''<nowiki><img src="http://example.com/app/transferFunds?</nowiki><span style="color: red;"><nowiki>amount=1500&destinationAccount=attackersAcct#" width="0" height="0" /></nowiki>'''</span> |
− | + | {{Top_10_2010:ExampleEndTemplate}} | |
− | |||
− | Wenn das Opfer eine präparierte Seite besucht, während es | + | Wenn das Opfer eine präparierte Seite besucht, während es bereits auf '''example.com authentifiziert''' ist, werden diese '''untergeschobenen Requests''' automatisch gültige Session-Informationen mit versenden. Die Requests sind somit unbeabsichtigt autorisiert. |
− | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=howPrevent|position=right|risk= | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=howPrevent|position=right|risk=8|year=2013|language=de}} |
− | Um CSRF zu verhindern, | + | Um CSRF zu verhindern, sollte jede Eingabeseite einen Token beinhalten. Der Token sollte unvorhersagbar und für jede Session, besser für jedes Formular, einzigartig sein und vom Server geprüft werden. |
− | # Die bevorzugte Methode, | + | # Die bevorzugte Methode, das Token einzubetten, ist ein Hidden-Input-Feld. Damit wird der Token-Wert im Body des Requests und nicht im URL übertragen (erleichtert sonst Ausspähung). |
− | # Ein solches Token kann auch direkt in den URL geschrieben oder als URL-Parameter übergeben werden. Jedoch birgt diese Vorgehensweise das Risiko, dass der URL dem Angreifer in die Hände fällt und somit das geheime Token kompromittiert ist. OWASPs [[CSRFGuard | CSRF Guard]] kann genutzt werden, um automatisch solche Token in Java EE, .NET oder PHP Anwendungen einzubinden. OWASPs | + | # Ein solches Token kann auch direkt in den URL geschrieben oder als URL-Parameter übergeben werden. Jedoch birgt diese Vorgehensweise das Risiko, dass der URL dem Angreifer in die Hände fällt und somit das geheime Token kompromittiert ist.<br/>OWASPs [[CSRFGuard | CSRF Guard]] kann genutzt werden, um automatisch solche Token in Java EE, .NET oder PHP Anwendungen einzubinden. OWASPs [[ESAPI]] beinhaltet Token-Generatoren und Validatoren, die Entwickler einsetzen können, um ihre Transaktionen zu schützen. |
+ | # Aktive Rückbestätigung vom Benutzer (erneute Authentifizierung, CAPTCHA-Eingabe, usw.) kann auch vor CSRF schützen. | ||
{{Top_10:SubsectionTableEndTemplate}} | {{Top_10:SubsectionTableEndTemplate}} | ||
= '''JAVA''' = | = '''JAVA''' = | ||
− | {{Top_10:SubsectionTableBeginTemplate|type=headertab}} {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=firstLeft|title=1|risk= | + | {{Top_10:SubsectionTableBeginTemplate|type=headertab}} {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=firstLeft|title=1|risk=8|year=2013|language=de}} |
====ESAPI==== | ====ESAPI==== | ||
{{Top_10_2010:ExampleBeginTemplate|year=2013}} | {{Top_10_2010:ExampleBeginTemplate|year=2013}} | ||
Line 92: | Line 94: | ||
{{Top_10_2010:ExampleEndTemplate}} | {{Top_10_2010:ExampleEndTemplate}} | ||
− | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=right|title=2|risk= | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=right|title=2|risk=8|year=2013|language=de}} |
====CSRF Guard==== | ====CSRF Guard==== | ||
{{Top_10_2010:ExampleBeginTemplate|year=2013}} | {{Top_10_2010:ExampleBeginTemplate|year=2013}} | ||
Line 144: | Line 146: | ||
vgl [[How_CSRFGuard_Works | How_CSRFGuard_Works]] -----------------------------------------------------> | vgl [[How_CSRFGuard_Works | How_CSRFGuard_Works]] -----------------------------------------------------> | ||
− | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=left|title=3|risk= | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=left|title=3|risk=8|year=2013|language=de}} |
====Java Server Faces (JSF)==== | ====Java Server Faces (JSF)==== | ||
JSF sendet ab Version 2.2 automatisch sichere CSRF-Token mit. | JSF sendet ab Version 2.2 automatisch sichere CSRF-Token mit. | ||
+ | <!-------------------- | ||
{{Top_10_2010:ExampleBeginTemplate|year=2013}} | {{Top_10_2010:ExampleBeginTemplate|year=2013}} | ||
...<br/> | ...<br/> | ||
Line 152: | Line 155: | ||
... <br/> | ... <br/> | ||
{{Top_10_2010:ExampleEndTemplate}} | {{Top_10_2010:ExampleEndTemplate}} | ||
− | + | ---------------------> | |
− | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=userImpact|position=right|risk= | + | <!--------------------- |
+ | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=userImpact|position=right|risk=8|year=2013|language=de}} | ||
====Tbd!!==== | ====Tbd!!==== | ||
;{Soll so etwas rein?} | ;{Soll so etwas rein?} | ||
Z.B. Keine Bookmarks auf ausgefüllte Eingabe-Formulare, Suchergebnisse; Frameworks funktionieren teilweise nicht für Web 2.0 | Z.B. Keine Bookmarks auf ausgefüllte Eingabe-Formulare, Suchergebnisse; Frameworks funktionieren teilweise nicht für Web 2.0 | ||
− | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=references|position= | + | -----------------------> |
+ | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=references|position=right|risk=8|year=2013|language=de}} | ||
{{Top_10_2010:SubSubsectionOWASPReferencesTemplate}} | {{Top_10_2010:SubSubsectionOWASPReferencesTemplate}} | ||
*[[Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet | OWASP CSRF Prevention Cheat Sheet]] | *[[Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet | OWASP CSRF Prevention Cheat Sheet]] | ||
Line 172: | Line 177: | ||
*[http://cwe.mitre.org/data/definitions/352.html CWE Entry 352 on CSRF] | *[http://cwe.mitre.org/data/definitions/352.html CWE Entry 352 on CSRF] | ||
*[http://www.jtmelton.com/2010/05/16/the-owasp-top-ten-and-esapi-part-6-cross-site-request-forgery-csrf John Melton's Weblog: The OWASP Top Ten and ESAPI –Part 5–] | *[http://www.jtmelton.com/2010/05/16/the-owasp-top-ten-and-esapi-part-6-cross-site-request-forgery-csrf John Melton's Weblog: The OWASP Top Ten and ESAPI –Part 5–] | ||
− | {{Top_10:SubsectionTableEndTemplate}} | + | {{Top_10:SubsectionTableEndTemplate}}{{Top 10 DeveloperEdition:NavigationByHeadertab |
+ | |headertab=JAVA | ||
+ | |useprev=2013PrevHeaderTabDeveloperEdition | ||
+ | |usenext=2013NextHeaderTabDeveloperEdition | ||
+ | |prev=A7-{{Top_10_2010:ByTheNumbers | ||
+ | |7 | ||
+ | |year=2013 | ||
+ | |language=de}} | ||
+ | |next=A9-{{Top_10_2010:ByTheNumbers | ||
+ | |9 | ||
+ | |year=2013 | ||
+ | |language=de}} | ||
+ | |year=2013 | ||
+ | |language=de | ||
+ | }} | ||
+ | |||
+ | = '''PHP''' = | ||
+ | {{taggedSection | ||
+ | | type=tbd | ||
+ | | comment=Bitte senden Sie uns weitere gute Beispiele mit PHP für diesen Abschnitt. | ||
+ | }} | ||
+ | {{Top_10:SubsectionTableBeginTemplate|type=headertab}} {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=firstLeft|title=1|risk=8|year=2013|language=de}} | ||
+ | {{Top_10_2010:ExampleBeginTemplate|year=2013}} | ||
+ | ... | ||
+ | : ... | ||
+ | <br/> | ||
+ | ... | ||
+ | {{Top_10_2010:ExampleEndTemplate}} | ||
+ | |||
+ | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=right|title=2|risk=8|year=2013|language=de}} | ||
+ | |||
+ | {{Top_10_2010:ExampleBeginTemplate|year=2013}} | ||
+ | : ... | ||
+ | <br/> | ||
+ | {{Top_10_2010:ExampleEndTemplate}} | ||
+ | <br/> | ||
+ | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=left|title=3|risk=8|year=2013|language=de}} | ||
+ | {{Top_10_2010:ExampleBeginTemplate|year=2013}} | ||
+ | ...<br/> | ||
+ | Tbd: konfig<br/> | ||
+ | ... <br/> | ||
+ | {{Top_10_2010:ExampleEndTemplate}} | ||
+ | |||
+ | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=references|position=right|risk=8|year=2013|language=de}} | ||
+ | {{Top_10_2010:SubSubsectionOWASPReferencesTemplate}} | ||
+ | *[[Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet | OWASP CSRF Prevention Cheat Sheet]] | ||
+ | *[[CSRF | OWASP CSRF Article]] | ||
+ | *[[CSRFGuard | OWASP CSRFGuard - CSRF Defense Tool]] | ||
+ | *[[ESAPI | ESAPI Project Home Page]] | ||
+ | *[[Testing_for_CSRF_(OWASP-SM-005) | OWASP Testing Guide: Chapter on CSRF Testing]] | ||
+ | *[[CSRFTester | OWASP CSRFTester - CSRF Testing Tool]] | ||
+ | {{Top_10_2010:SubSubsectionExternalReferencesTemplate|language=de}} | ||
+ | *[http://cwe.mitre.org/data/definitions/352.html CWE Entry 352 on CSRF] | ||
+ | *[http://www.jtmelton.com/2010/05/16/the-owasp-top-ten-and-esapi-part-6-cross-site-request-forgery-csrf John Melton's Weblog: The OWASP Top Ten and ESAPI –Part 5–] | ||
+ | {{Top_10:SubsectionTableEndTemplate}}{{Top 10 DeveloperEdition:NavigationByHeadertab | ||
+ | |headertab=PHP | ||
+ | |useprev=2013PrevHeaderTabDeveloperEdition | ||
+ | |usenext=2013NextHeaderTabDeveloperEdition | ||
+ | |prev=A7-{{Top_10_2010:ByTheNumbers | ||
+ | |7 | ||
+ | |year=2013 | ||
+ | |language=de}} | ||
+ | |next=A9-{{Top_10_2010:ByTheNumbers | ||
+ | |9 | ||
+ | |year=2013 | ||
+ | |language=de}} | ||
+ | |year=2013 | ||
+ | |language=de | ||
+ | }} | ||
− | = ''' | + | = '''.NET''' = |
− | {{Top_10:SubsectionTableBeginTemplate|type=headertab}} {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=firstLeft|title=1|risk= | + | {{taggedSection |
+ | | type=tbd | ||
+ | | comment=Bitte senden Sie uns weitere gute Beispiele mit PHP für diesen Abschnitt. | ||
+ | }} | ||
+ | {{Top_10:SubsectionTableBeginTemplate|type=headertab}} {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=firstLeft|title=1|risk=8|year=2013|language=de}} | ||
====ASP.NET Web Formulare==== | ====ASP.NET Web Formulare==== | ||
(noch unbearbeitet => tbd)<br/> | (noch unbearbeitet => tbd)<br/> | ||
Line 212: | Line 289: | ||
{{Top_10_2010:ExampleEndTemplate}} | {{Top_10_2010:ExampleEndTemplate}} | ||
[[.NET_Security_Cheat_Sheet|'''Quelle: .NET Security Cheat Sheet''']]<br/> | [[.NET_Security_Cheat_Sheet|'''Quelle: .NET Security Cheat Sheet''']]<br/> | ||
− | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=right|title=2|risk= | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=right|title=2|risk=8|year=2013|language=de}} |
{{Top_10_2010:ExampleBeginTemplate|year=2013}} | {{Top_10_2010:ExampleBeginTemplate|year=2013}} | ||
tbd | tbd | ||
Line 218: | Line 295: | ||
{{Top_10_2010:ExampleEndTemplate}} | {{Top_10_2010:ExampleEndTemplate}} | ||
− | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=whole|title=3|risk= | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=whole|title=3|risk=8|year=2013|language=de}} |
tbd | tbd | ||
Text | Text | ||
− | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=userImpact|position=left|risk= | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=userImpact|position=left|risk=8|year=2013|language=de}} |
;{Soll so etwas rein?} | ;{Soll so etwas rein?} | ||
Z.B. Keine Bookmarks auf ausgefüllte Eingabe-Formulare, Suchergebnisse; Frameworks funktionieren teilweise nicht für Web 2.0 | Z.B. Keine Bookmarks auf ausgefüllte Eingabe-Formulare, Suchergebnisse; Frameworks funktionieren teilweise nicht für Web 2.0 | ||
− | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=references|position=right|risk= | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=references|position=right|risk=8|year=2013|language=de}} |
{{Top_10_2010:SubSubsectionOWASPReferencesTemplate}} | {{Top_10_2010:SubSubsectionOWASPReferencesTemplate}} | ||
{{Top_10_2010:SubSubsectionExternalReferencesTemplate|language=de}} | {{Top_10_2010:SubSubsectionExternalReferencesTemplate|language=de}} | ||
Line 243: | Line 320: | ||
*[http://cwe.mitre.org/data/definitions/352.html CWE Entry 352 on CSRF] | *[http://cwe.mitre.org/data/definitions/352.html CWE Entry 352 on CSRF] | ||
*[http://asafaweb.com/OWASP%20Top%2010%20for%20.NET%20developers.pdf OWASP Top 10 for .NET developers (Troy Hunt)] | *[http://asafaweb.com/OWASP%20Top%2010%20for%20.NET%20developers.pdf OWASP Top 10 for .NET developers (Troy Hunt)] | ||
− | {{Top_10:SubsectionTableEndTemplate}} | + | {{Top_10:SubsectionTableEndTemplate}}{{Top 10 DeveloperEdition:NavigationByHeadertab |
+ | |headertab=.NET | ||
+ | |useprev=2013PrevHeaderTabDeveloperEdition | ||
+ | |usenext=2013NextHeaderTabDeveloperEdition | ||
+ | |prev=A7-{{Top_10_2010:ByTheNumbers | ||
+ | |7 | ||
+ | |year=2013 | ||
+ | |language=de}} | ||
+ | |next=A9-{{Top_10_2010:ByTheNumbers | ||
+ | |9 | ||
+ | |year=2013 | ||
+ | |language=de}} | ||
+ | |year=2013 | ||
+ | |language=de | ||
+ | }} | ||
+ | <!-- weitere Programmiersprachen oder evtl Anti-Beispiele --- > | ||
= '''Test''' = | = '''Test''' = | ||
− | + | {{Top_10:SubsectionTableBeginTemplate|type=headertab}} {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=firstLeft|title=1|risk=5|year=2013|language=de}} | |
− | {{Top_10:SubsectionTableBeginTemplate|type=headertab}} {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=firstLeft|title=1|risk=5|year= | ||
{{Top_10_2010:ExampleBeginTemplate|year=2013}} | {{Top_10_2010:ExampleBeginTemplate|year=2013}} | ||
tbd | tbd | ||
Line 253: | Line 344: | ||
{{Top_10_2010:ExampleEndTemplate}} | {{Top_10_2010:ExampleEndTemplate}} | ||
− | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=right|title=2|risk=5|year= | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=right|title=2|risk=5|year=2013|language=de}} |
{{Top_10_2010:ExampleBeginTemplate|year=2013}} | {{Top_10_2010:ExampleBeginTemplate|year=2013}} | ||
tbd | tbd | ||
Line 259: | Line 350: | ||
{{Top_10_2010:ExampleEndTemplate}} | {{Top_10_2010:ExampleEndTemplate}} | ||
− | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=whole|title=3|risk= | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=whole|title=3|risk=8|year=2013|language=de}} |
(ganze Breite) | (ganze Breite) | ||
Text | Text | ||
− | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=howPrevent|position=whole|risk= | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=howPrevent|position=whole|risk=8|year=2013|language=de}} |
Text | Text | ||
− | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=userImpact|position=left|risk= | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=userImpact|position=left|risk=8|year=2013|language=de}} |
Text | Text | ||
− | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=references|position=right|risk= | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=references|position=right|risk=8|year=2013|language=de}} |
− | {{Top_10:SubsectionTableEndTemplate}} | + | {{Top_10:SubsectionTableEndTemplate}}{{Top 10 DeveloperEdition:NavigationByHeadertab |
− | + | |headertab=Test | |
− | + | |useprev=2013PrevHeaderTabDeveloperEdition | |
− | + | |usenext=2013NextHeaderTabDeveloperEdition | |
− | {{ | + | |prev=A7-{{Top_10_2010:ByTheNumbers |
− | + | |7 | |
− | + | |year=2013 | |
− | + | |language=de}} | |
− | {{Top_10_2010: | + | |next=A9-{{Top_10_2010:ByTheNumbers |
− | + | |9 | |
− | + | |year=2013 | |
− | + | |language=de}} | |
− | + | |year=2013 | |
− | + | |language=de | |
− | + | }} | |
− | + | ------------------------------> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<headertabs /> | <headertabs /> | ||
− | + | {{Top_10_2013_DeveloperEdition:BottomAdvancedTemplate | |
− | {{ | ||
|type=0 | |type=0 | ||
− | |useprev= | + | |useprev=2013PrevLinkDeveloperEdition |
− | |usenext= | + | |usenext=2013NextLinkDeveloperEdition |
− | |prev= | + | |prev=A7-{{Top_10_2010:ByTheNumbers |
− | | | + | |7 |
− | | | + | |year=2013 |
− | | | + | |language=de}} |
− | |next= | + | |next=A9-{{Top_10_2010:ByTheNumbers |
− | | | + | |9 |
− | |language=de | + | |year=2013 |
− | + | |language=de}} | |
+ | |year=2013 | ||
+ | |language=de | ||
}} | }} | ||
− | |||
− |
Latest revision as of 20:15, 23 March 2016
← A7-Fehlerhafte Autorisierung auf Anwendungsebene | A9-Nutzung von Komponenten mit bekannten Schwachstellen → |
Anwendungs- spezifisch |
Ausnutzbarkeit DURCHSCHNITTLICH |
Verbreitung HÄUFIG |
Auffindbarkeit EINFACH |
Auswirkung MITTEL |
Anwendungs-/ Geschäftsspezifisch |
Jeder, der einem Browser Inhalte unterschieben kann, die nicht beabsichtigte Requests auslösen. Hierfür kommt jede Website oder jede HTML-Quelle in Betracht, die der Nutzer verwendet. | Durch Image-Tags, XSS oder andere Techniken löst das Opfer unbeabsichtigt einen gefälschten HTTP-Request für eine Anwendung aus. Falls der Nutzer authentifiziert ist, wird dieser Angriff Erfolg haben. | CSRF nutzt aus, dass es bei den meisten Webanwendungen möglich ist, die Inhalte eines Requests für eine bestimmte Aktion vorherzusagen.
Da Browser Informationen zum Session-Management automatisch mitsenden, kann ein Angreifer gefälschte Requests auf bösartigen Websites hinterlegen, die von autorisierten und gewollten Requests nicht unterschieden werden können. CSRF-Schwächen sind leicht durch Penetrationstests oder Quellcode-Analysen auffindbar. |
Angreifer können über den Browser des Opfers alle zustandsändernden Aktionen auslösen, für das es berechtigt ist, z.B. Ändern von Daten, Aufgeben von Bestellungen, Logout und Login, usw. |
Betrachten Sie den Geschäftswert der betroffenen Daten oder Funktionen. Es bleibt die Unsicherheit, ob der Nutzer die Aktion ausführen wollte. Bedenken Sie mögliche Auswirkungen auf Ihre Reputation. |
Mögliche Angriffsszenarien
Die Anwendung erlaubt es einem Benutzer, einen zustandsändernden Request auszulösen, der kein geheimes Token beinhaltet, wie z.B.: http://example.com/app/transferFunds?amount=1500&destinationAccount=4673243243 Dadurch kann ein Angreifer einen Request erzeugen, der Geld vom Konto des Opfers auf das Konto des Angreifers transferiert. Diesen bettet der Angreifer „unsichtbar“ in ein Image-Tag oder ein Iframe ein und hinterlegt ihn in einer beliebigen Website: <img src="http://example.com/app/transferFunds?amount=1500&destinationAccount=attackersAcct#" width="0" height="0" /> Wenn das Opfer eine präparierte Seite besucht, während es bereits auf example.com authentifiziert ist, werden diese untergeschobenen Requests automatisch gültige Session-Informationen mit versenden. Die Requests sind somit unbeabsichtigt autorisiert. |
Wie kann ich 'Cross-Site Request Forgery (CSRF)' verhindern?
Um CSRF zu verhindern, sollte jede Eingabeseite einen Token beinhalten. Der Token sollte unvorhersagbar und für jede Session, besser für jedes Formular, einzigartig sein und vom Server geprüft werden.
|
Verteidigungs-Option 1 gegen 'Cross-Site Request Forgery (CSRF)':
ESAPI /** (A) CSRF-Token erzeugen **/
%> /** (B2) das CSRF-Token als URL Parameter in den GET-Request hinzufügen, jedoch **/
%>
}
|
Verteidigungs-Option 2 gegen 'Cross-Site Request Forgery (CSRF)':
CSRF Guard
<context-param>
</context-param>
</context-param>
</listener>
</filter>
</filter-mapping> vgl Owasp.CsrfGuard.Test |
Verteidigungs-Option 3 gegen 'Cross-Site Request Forgery (CSRF)':
Java Server Faces (JSF)JSF sendet ab Version 2.2 automatisch sichere CSRF-Token mit. |
Referenzen
OWASP
Andere |
Comment: Bitte senden Sie uns weitere gute Beispiele mit PHP für diesen Abschnitt.
Verteidigungs-Option 1 gegen 'Cross-Site Request Forgery (CSRF)':
...
|
Verteidigungs-Option 2 gegen 'Cross-Site Request Forgery (CSRF)':
|
Verteidigungs-Option 3 gegen 'Cross-Site Request Forgery (CSRF)':
... |
Referenzen
OWASP
Andere |
Comment: Bitte senden Sie uns weitere gute Beispiele mit PHP für diesen Abschnitt.
Verteidigungs-Option 1 gegen 'Cross-Site Request Forgery (CSRF)':
ASP.NET Web Formulare(noch unbearbeitet => tbd) private const string AntiXsrfTokenKey = "__AntiXsrfToken";
} |
Verteidigungs-Option 2 gegen 'Cross-Site Request Forgery (CSRF)':
tbd Text |
Verteidigungs-Option 3 gegen 'Cross-Site Request Forgery (CSRF)':
tbd Text | |
Auswirkung(en) auf den Benutzer
Z.B. Keine Bookmarks auf ausgefüllte Eingabe-Formulare, Suchergebnisse; Frameworks funktionieren teilweise nicht für Web 2.0 |
Referenzen
OWASP Andere OWASP
Andere |
← A7-Fehlerhafte Autorisierung auf Anwendungsebene | A9-Nutzung von Komponenten mit bekannten Schwachstellen → |
