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)"
(HTTPUtilities.verifyCSRFToken(HttpServletRequest request) wirft IntrusionException wenn Token nicht gültig ist) |
(Beispiel für .NET (noch unbearbeitet); bis auf 3x alle '_Developer_Edition_De'-Templates auf die neuen mehrsprachigen Templates umgestellt) |
||
Line 2: | Line 2: | ||
|useprev=PrevLink_Germany_Projekte | |useprev=PrevLink_Germany_Projekte | ||
|usenext=NextLink_Germany_Projekte | |usenext=NextLink_Germany_Projekte | ||
− | |prev=Top_10_fuer_Entwickler/A4_{{ | + | |prev=Top_10_fuer_Entwickler/A4_{{Top_10_2010:ByTheNumbers |
|4 | |4 | ||
|language=de | |language=de | ||
|year=2010}} | |year=2010}} | ||
− | |next=Top_10_fuer_Entwickler/A6_{{ | + | |next=Top_10_fuer_Entwickler/A6_{{Top_10_2010:ByTheNumbers |
|6 | |6 | ||
|language=de | |language=de | ||
Line 35: | Line 35: | ||
{{Top_10_2010:SummaryTableEndTemplate}} | {{Top_10_2010:SummaryTableEndTemplate}} | ||
− | {{Top_10:SubsectionTableBeginTemplate|type=main}} {{ | + | {{Top_10:SubsectionTableBeginTemplate|type=main}} {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=example|position=firstLeft|risk=5|year=2010|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.: | ||
Line 46: | Line 46: | ||
Wenn das Opfer eine präparierte Seite besucht, während es z.B. bereits auf '''example.com authentisiert''' ist, wird der '''untergeschobene Request''' unbemerkt ausgeführt, da der Browser die aktuellen Session-Informationen automatisch mitsendet und somit unbeabsichtigt autorisiert.<!--- Text geändert ---> | Wenn das Opfer eine präparierte Seite besucht, während es z.B. bereits auf '''example.com authentisiert''' ist, wird der '''untergeschobene Request''' unbemerkt ausgeführt, da der Browser die aktuellen Session-Informationen automatisch mitsendet und somit unbeabsichtigt autorisiert.<!--- Text geändert ---> | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=howPrevent|position=right|risk=5|year=2010|language=de}} |
Um CSRF zu verhindern, muss ein unvorhersagbarer Token im Body oder in der URL eines jeden HTTP-Requests eingebettet sein (und geprüft werden). Ein solcher Token sollte für mindestens jede Nutzer-Session, besser noch für jeden Request, einzigartig sein. | Um CSRF zu verhindern, muss ein unvorhersagbarer Token im Body oder in der URL eines jeden HTTP-Requests eingebettet sein (und geprüft werden). Ein solcher Token sollte für mindestens jede Nutzer-Session, besser noch für jeden Request, einzigartig sein. | ||
# Die bevorzugte Methode, ein solches Token unterzubringen ist ein Hidden-Input-Feld. Damit wird der Token-Wert im Body des HTTP-Requests und nicht im URL übertragen. Eine Übertragung im URL kann leichter ausgespäht werden. | # Die bevorzugte Methode, ein solches Token unterzubringen ist ein Hidden-Input-Feld. Damit wird der Token-Wert im Body des HTTP-Requests und nicht im URL übertragen. Eine Übertragung im URL kann leichter ausgespäht werden. | ||
Line 53: | Line 53: | ||
= '''JAVA''' = | = '''JAVA''' = | ||
− | + | {{Top_10:SubsectionTableBeginTemplate|type=headertab}} {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=firstLeft|title=1|risk=5|year=2010|language=de}} | |
− | |||
− | {{Top_10:SubsectionTableBeginTemplate|type=headertab}} {{ | ||
====ESAPI==== | ====ESAPI==== | ||
{{Top_10_2010:ExampleBeginTemplate}} | {{Top_10_2010:ExampleBeginTemplate}} | ||
Line 85: | Line 83: | ||
try { | try { | ||
: <span style="color: green;">'''ESAPI.httpUtilities().verifyCSRFToken(request);'''</span> | : <span style="color: green;">'''ESAPI.httpUtilities().verifyCSRFToken(request);'''</span> | ||
− | } catch( IntrusionException e ) {<br/> | + | : } catch( IntrusionException e ) {<br/> |
: // log intrusion exception | : // log intrusion exception | ||
: // abort request and deny access | : // abort request and deny access | ||
Line 94: | Line 92: | ||
{{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=2010|language=de}} |
====CSRF Guard==== | ====CSRF Guard==== | ||
{{Top_10_2010:ExampleBeginTemplate}} | {{Top_10_2010:ExampleBeginTemplate}} | ||
Line 146: | Line 144: | ||
vgl [[How_CSRFGuard_Works | How_CSRFGuard_Works]] -----------------------------------------------------> | vgl [[How_CSRFGuard_Works | How_CSRFGuard_Works]] -----------------------------------------------------> | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=userImpact|position=left|risk=5|year=2010|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=right|risk=5|year=2010|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 162: | Line 160: | ||
*[[Testing_for_CSRF_(OWASP-SM-005) | OWASP Testing Guide: Chapter on CSRF Testing]] | *[[Testing_for_CSRF_(OWASP-SM-005) | OWASP Testing Guide: Chapter on CSRF Testing]] | ||
*[[CSRFTester | OWASP CSRFTester - CSRF Testing Tool]] | *[[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://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}} | ||
+ | |||
+ | = '''dotNET''' = | ||
+ | {{Top_10:SubsectionTableBeginTemplate|type=headertab}} {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=firstLeft|title=1|risk=5|year=2010|language=de}} | ||
+ | ====ASP.NET Web Formulare==== | ||
+ | (noch unbearbeitet => tbd)<br/> | ||
+ | If you don't use Viewstate, then look to the default master page of the ASP.NET Web Forms default template for a manual anti-CSRF token.<br/> | ||
+ | {{Top_10_2010:ExampleBeginTemplate|year=2013}} | ||
+ | private const string AntiXsrfTokenKey = "__AntiXsrfToken";<br/> | ||
+ | private const string AntiXsrfUserNameKey = "__AntiXsrfUserName";<br/> | ||
+ | private string _antiXsrfTokenValue;<br/> | ||
+ | protected void Page_Init(object sender, EventArgs e)<br/> | ||
+ | {<br/> | ||
+ | : // The code below helps to protect against XSRF attacks | ||
+ | : var requestCookie = Request.Cookies[AntiXsrfTokenKey]; | ||
+ | : Guid requestCookieGuidValue; | ||
+ | : if (requestCookie != null && Guid.TryParse(requestCookie.Value, out requestCookieGuidValue)) | ||
+ | : { | ||
+ | :: // Use the Anti-XSRF token from the cookie | ||
+ | :: _antiXsrfTokenValue = requestCookie.Value; | ||
+ | :: Page.ViewStateUserKey = _antiXsrfTokenValue; | ||
+ | : } else { | ||
+ | :: // Generate a new Anti-XSRF token and save to the cookie | ||
+ | :: _antiXsrfTokenValue = Guid.NewGuid().ToString("N"); | ||
+ | :: Page.ViewStateUserKey = _antiXsrfTokenValue; | ||
+ | :: var responseCookie = new HttpCookie(AntiXsrfTokenKey) | ||
+ | :: { | ||
+ | ::: HttpOnly = true, | ||
+ | ::: Value = _antiXsrfTokenValue | ||
+ | :: }; | ||
+ | :: if (FormsAuthentication.RequireSSL && Request.IsSecureConnection) | ||
+ | :: { | ||
+ | ::: responseCookie.Secure = true; | ||
+ | :: } | ||
+ | :: Response.Cookies.Set(responseCookie); | ||
+ | : } | ||
+ | : Page.PreLoad += master_Page_PreLoad; | ||
+ | } | ||
+ | {{Top_10_2010:ExampleEndTemplate}} | ||
+ | [[.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=5|year=2010|language=de}} | ||
+ | {{Top_10_2010:ExampleBeginTemplate|year=2013}} | ||
+ | tbd | ||
+ | Text | ||
+ | {{Top_10_2010:ExampleEndTemplate}} | ||
+ | |||
+ | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=whole|title=3|risk=5|year=2010|language=de}} | ||
+ | tbd | ||
+ | Text | ||
+ | |||
+ | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=userImpact|position=left|risk=5|year=2010|language=de}} | ||
+ | ;{Soll so etwas rein?} | ||
+ | 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=5|year=2010|language=de}} | ||
+ | {{Top_10_2010:SubSubsectionOWASPReferencesTemplate}} | ||
+ | {{Top_10_2010:SubSubsectionExternalReferencesTemplate|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]] | ||
+ | *[[CSRFGuard_3_Installation | OWASP CSRFGuard - CSRFGuard_3_Installation]] <!-- added --> | ||
+ | *[[CSRFGuard_3_Configuration | OWASP CSRFGuard - CSRFGuard_3_Configuration]] <!-- added --> | ||
+ | *[[ESAPI | ESAPI Project Home Page]] | ||
+ | *[http://owasp-esapi-java.googlecode.com/svn/trunk_doc/latest/org/owasp/esapi/HTTPUtilities.html ESAPI HTTPUtilities Class with AntiCSRF Tokens] | ||
+ | *[http://code.google.com/p/owasp-esapi-java/wiki/Welcome ESAPI-Java-Wiki] <!-- added --> | ||
+ | *[[Testing_for_CSRF_(OWASP-SM-005) | OWASP Testing Guide: Chapter on CSRF Testing]] | ||
+ | *[[CSRFTester | OWASP CSRFTester - CSRF Testing Tool]] | ||
+ | *[[.NET Security Cheat Sheet| .NET Security Cheat Sheet]] | ||
+ | {{Top_10_2010:SubSubsectionExternalReferencesTemplate|language=de}} | ||
+ | *[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)] | ||
{{Top_10:SubsectionTableEndTemplate}} | {{Top_10:SubsectionTableEndTemplate}} | ||
= '''Test''' = | = '''Test''' = | ||
<!-- weitere Programmiersprachen oder evtl Anti-Beispiele ---> | <!-- weitere Programmiersprachen oder evtl Anti-Beispiele ---> | ||
− | {{Top_10:SubsectionTableBeginTemplate|type=headertab}} {{ | + | {{Top_10:SubsectionTableBeginTemplate|type=headertab}} {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=firstLeft|title=1|risk=5|year=2010|language=de}} |
{{Top_10_2010:ExampleBeginTemplate}} | {{Top_10_2010:ExampleBeginTemplate}} | ||
tbd | tbd | ||
Line 175: | Line 244: | ||
{{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=2010|language=de}} |
{{Top_10_2010:ExampleBeginTemplate}} | {{Top_10_2010:ExampleBeginTemplate}} | ||
tbd | tbd | ||
Line 181: | Line 250: | ||
{{Top_10_2010:ExampleEndTemplate}} | {{Top_10_2010:ExampleEndTemplate}} | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=whole|title=3|risk=5|year=2010|language=de}} |
(ganze Breite) | (ganze Breite) | ||
Text | Text | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=howPrevent|position=whole|risk=5|year=2010|language=de}} |
Text | Text | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=userImpact|position=left|risk=5|year=2010|language=de}} |
Text | Text | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=references|position=right|risk=5|year=2010|language=de}} |
{{Top_10:SubsectionTableEndTemplate}} | {{Top_10:SubsectionTableEndTemplate}} | ||
= '''Test LanguageFile 2010 en''' = | = '''Test LanguageFile 2010 en''' = | ||
<!-- weitere Programmiersprachen oder evtl Anti-Beispiele ---> | <!-- weitere Programmiersprachen oder evtl Anti-Beispiele ---> | ||
− | {{Top_10:SubsectionTableBeginTemplate|type=headertab}} {{ | + | {{Top_10:SubsectionTableBeginTemplate|type=headertab}} {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=firstLeft|title=1|risk=5|year=2010|language=en}} |
{{Top_10_2010:ExampleBeginTemplate}} | {{Top_10_2010:ExampleBeginTemplate}} | ||
tbd | tbd | ||
Line 202: | Line 271: | ||
{{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=2010|language=en}} |
{{Top_10_2010:ExampleBeginTemplate}} | {{Top_10_2010:ExampleBeginTemplate}} | ||
tbd | tbd | ||
Line 208: | Line 277: | ||
{{Top_10_2010:ExampleEndTemplate}} | {{Top_10_2010:ExampleEndTemplate}} | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=whole|title=3|risk=5|year=2010|language=en}} |
tbd | tbd | ||
(ganze Breite) | (ganze Breite) | ||
Text | Text | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=howPrevent|position=whole|risk=5|year=2010|language=en}} |
Text | Text | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=userImpact|position=left|risk=5|year=2010|language=en}} |
Text | Text | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=howPrevent|position=right|risk=5|year=2010|language=en}} |
Text | Text | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=references|position=left|risk=5|year=2010|language=en}} |
{{Top_10:SubsectionTableEndTemplate}} | {{Top_10:SubsectionTableEndTemplate}} | ||
= '''Test LanguageFile 2010 us''' = | = '''Test LanguageFile 2010 us''' = | ||
<!-- weitere Programmiersprachen oder evtl Anti-Beispiele ---> | <!-- weitere Programmiersprachen oder evtl Anti-Beispiele ---> | ||
− | {{Top_10:SubsectionTableBeginTemplate|type=headertab}} {{ | + | {{Top_10:SubsectionTableBeginTemplate|type=headertab}} {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=firstLeft|title=1|risk=5|year=2010|language=us}} |
{{Top_10_2010:ExampleBeginTemplate}} | {{Top_10_2010:ExampleBeginTemplate}} | ||
tbd | tbd | ||
Line 233: | Line 302: | ||
{{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=2010|language=us}} |
{{Top_10_2010:ExampleBeginTemplate}} | {{Top_10_2010:ExampleBeginTemplate}} | ||
tbd | tbd | ||
Line 239: | Line 308: | ||
{{Top_10_2010:ExampleEndTemplate}} | {{Top_10_2010:ExampleEndTemplate}} | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=whole|title=3|risk=5|year=2010|language=us}} |
tbd | tbd | ||
(ganze Breite) | (ganze Breite) | ||
Text | Text | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=howPrevent|position=whole|risk=5|year=2010|language=us}} |
Text | Text | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=userImpact|position=left|risk=5|year=2010|language=us}} |
Text | Text | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=howPrevent|position=right|risk=5|year=2010|language=us}} |
Text | Text | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=references|position=left|risk=5|year=2010|language=us}} |
{{Top_10:SubsectionTableEndTemplate}} | {{Top_10:SubsectionTableEndTemplate}} | ||
= '''Test LanguageFile 2010 Default''' = | = '''Test LanguageFile 2010 Default''' = | ||
<!-- weitere Programmiersprachen oder evtl Anti-Beispiele ---> | <!-- weitere Programmiersprachen oder evtl Anti-Beispiele ---> | ||
− | {{Top_10:SubsectionTableBeginTemplate|type=headertab}} {{ | + | {{Top_10:SubsectionTableBeginTemplate|type=headertab}} {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=firstLeft|title=1|risk=5|year=2010}} |
{{Top_10_2010:ExampleBeginTemplate}} | {{Top_10_2010:ExampleBeginTemplate}} | ||
tbd | tbd | ||
Line 265: | Line 334: | ||
{{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=2010}} |
{{Top_10_2010:ExampleBeginTemplate}} | {{Top_10_2010:ExampleBeginTemplate}} | ||
tbd | tbd | ||
Line 271: | Line 340: | ||
{{Top_10_2010:ExampleEndTemplate}} | {{Top_10_2010:ExampleEndTemplate}} | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=whole|title=3|risk=5|year=2010}} |
tbd | tbd | ||
(ganze Breite) | (ganze Breite) | ||
Text | Text | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=howPrevent|position=whole|risk=5|year=2010}} |
Text | Text | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=userImpact|position=left|risk=5|year=2010}} |
Text | Text | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=howPrevent|position=right|risk=5|year=2010}} |
Text | Text | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=references|position=left|risk=5|year=2010}} |
{{Top_10:SubsectionTableEndTemplate}} | {{Top_10:SubsectionTableEndTemplate}} | ||
= '''Test LanguageFile 2013 Default''' = | = '''Test LanguageFile 2013 Default''' = | ||
<!-- weitere Programmiersprachen oder evtl Anti-Beispiele ---> | <!-- weitere Programmiersprachen oder evtl Anti-Beispiele ---> | ||
− | {{Top_10:SubsectionTableBeginTemplate|type=headertab}} {{ | + | {{Top_10:SubsectionTableBeginTemplate|type=headertab}} {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=firstLeft|title=11|risk=5|year=2013}} |
{{Top_10_2010:ExampleBeginTemplate}} | {{Top_10_2010:ExampleBeginTemplate}} | ||
tbd | tbd | ||
Line 296: | Line 365: | ||
{{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=2013}} |
{{Top_10_2010:ExampleBeginTemplate}} | {{Top_10_2010:ExampleBeginTemplate}} | ||
tbd | tbd | ||
Line 302: | Line 371: | ||
{{Top_10_2010:ExampleEndTemplate}} | {{Top_10_2010:ExampleEndTemplate}} | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=whole|title=3|risk=5|year=2013}} |
tbd | tbd | ||
(ganze Breite) | (ganze Breite) | ||
Text | Text | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=howPrevent|position=whole|risk=5|year=2013}} |
Text | Text | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=userImpact|position=left|risk=5|year=2013}} |
Text | Text | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=howPrevent|position=right|risk=5|year=2013}} |
Text | Text | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=references|position=left|risk=5|year=2013}} |
{{Top_10:SubsectionTableEndTemplate}} | {{Top_10:SubsectionTableEndTemplate}} | ||
= '''Test LanguageFile Default''' = | = '''Test LanguageFile Default''' = | ||
<!-- weitere Programmiersprachen oder evtl Anti-Beispiele ---> | <!-- weitere Programmiersprachen oder evtl Anti-Beispiele ---> | ||
− | {{Top_10:SubsectionTableBeginTemplate|type=headertab}} {{ | + | {{Top_10:SubsectionTableBeginTemplate|type=headertab}} {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=firstLeft|title=1|risk=5}} |
{{Top_10_2010:ExampleBeginTemplate}} | {{Top_10_2010:ExampleBeginTemplate}} | ||
tbd | tbd | ||
Line 327: | Line 396: | ||
{{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}} |
{{Top_10_2010:ExampleBeginTemplate}} | {{Top_10_2010:ExampleBeginTemplate}} | ||
tbd | tbd | ||
Line 333: | Line 402: | ||
{{Top_10_2010:ExampleEndTemplate}} | {{Top_10_2010:ExampleEndTemplate}} | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=whole|title=3|risk=5}} |
tbd | tbd | ||
(ganze Breite) | (ganze Breite) | ||
Text | Text | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=userImpact|position=left|risk=5}} |
Text | Text | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=howPrevent|position=right|risk=5}} |
Text | Text | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=howPrevent|position=whole|risk=5}} |
Text | Text | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=references|position=left|risk=5}} |
{{Top_10:SubsectionTableEndTemplate}} | {{Top_10:SubsectionTableEndTemplate}} | ||
<headertabs /> | <headertabs /> | ||
Line 354: | Line 423: | ||
|useprev=PrevLink_Germany_Projekte | |useprev=PrevLink_Germany_Projekte | ||
|usenext=NextLink_Germany_Projekte | |usenext=NextLink_Germany_Projekte | ||
− | |prev=Top_10_fuer_Entwickler/A4_{{ | + | |prev=Top_10_fuer_Entwickler/A4_{{Top_10_2010:ByTheNumbers |
|4 | |4 | ||
|language=de | |language=de | ||
|year=2010}} | |year=2010}} | ||
− | |next=Top_10_fuer_Entwickler/A6_{{ | + | |next=Top_10_fuer_Entwickler/A6_{{Top_10_2010:ByTheNumbers |
|6 | |6 | ||
|language=de | |language=de | ||
|year=2010}} | |year=2010}} | ||
}} | }} | ||
− | |||
[[Category:OWASP Top 10 fuer Entwickler]] | [[Category:OWASP Top 10 fuer Entwickler]] |
Revision as of 14:47, 20 April 2013
← Top_10_fuer_Entwickler/A4_Unsichere direkte Objektreferenzen | Top_10_fuer_Entwickler/A6_Sicherheitsrelevante Fehlkonfiguration → |
Seite in Bearbeitung (BAUSTELLE!!)
A5 Cross-Site Request Forgery (CSRF, XSRF, Session Riding)
______ | Ausnutzbarkeit DURCHSCHNITTLICH |
Verbreitung SEHR HÄUFIG |
Auffindbarkeit EINFACH |
Auswirkung MITTEL |
Application / Business Specific |
Jeder, der einem Nutzer einer Webanwendung einen nicht beabsichtigten Request für diese Anwendung unterschieben kann. 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 authentisiert ist, wird dieser Angriff Erfolg haben. | CSRF zielt auf Anwendungen, die es dem Angreifer erlauben, alle Details 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 legitimen Requests nicht unterschieden werden können. CSRF-Schwächen sind leicht durch Penetrationstests oder Quellcode-Analysen auffindbar. |
Der Angreifer kann unbemerkt das Opfer über dessen Browser dazu veranlassen, alle Daten zu ändern oder jede Funktion auszuführen, für die das spezifische Opfer berechtigt ist. | 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.:
Dadurch kann ein Angreifer einen Request erzeugen, der Geld vom Konto des Opfers auf das Konto des Angreifers transferiert. Diesen bettet er in einem Image-Tag oder einem Iframe ein und hinterlegt ihn in einer beliebigen Website.
Wenn das Opfer eine präparierte Seite besucht, während es z.B. bereits auf example.com authentisiert ist, wird der untergeschobene Request unbemerkt ausgeführt, da der Browser die aktuellen Session-Informationen automatisch mitsendet und somit unbeabsichtigt autorisiert. |
Wie kann ich 'Cross-Site Request Forgery (CSRF)' verhindern?
Um CSRF zu verhindern, muss ein unvorhersagbarer Token im Body oder in der URL eines jeden HTTP-Requests eingebettet sein (und geprüft werden). Ein solcher Token sollte für mindestens jede Nutzer-Session, besser noch für jeden Request, einzigartig sein.
|
- JAVA
- dotNET
- Test
- Test LanguageFile 2010 en
- Test LanguageFile 2010 us
- Test LanguageFile 2010 Default
- Test LanguageFile 2013 Default
- Test LanguageFile Default
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 |
Auswirkung(en) auf den Benutzer
Tbd!!
Z.B. Keine Bookmarks auf ausgefüllte Eingabe-Formulare, Suchergebnisse; Frameworks funktionieren teilweise nicht für Web 2.0 |
Referenzen
OWASP
Andere |
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 |
Verteidigungs-Option 1 gegen 'Cross-Site Request Forgery (CSRF)':
tbd Text |
Verteidigungs-Option 2 gegen 'Cross-Site Request Forgery (CSRF)':
tbd Text |
Verteidigungs-Option 3 gegen 'Cross-Site Request Forgery (CSRF)':
(ganze Breite) Text | |
Wie kann ich 'Cross-Site Request Forgery (CSRF)' verhindern?
Text | |
Auswirkung(en) auf den Benutzer
Text |
Referenzen
|
Defending Option 1 against 'Cross-Site Request Forgery (CSRF)':
tbd Text |
Defending Option 2 against 'Cross-Site Request Forgery (CSRF)':
tbd Text |
Defending Option 3 against 'Cross-Site Request Forgery (CSRF)':
tbd (ganze Breite) Text | |
How Do I Prevent 'Cross-Site Request Forgery (CSRF)'?
Text | |
Impact to the User
Text |
How Do I Prevent 'Cross-Site Request Forgery (CSRF)'?
Text |
References
|
Defending Option 1 against 'Cross-Site Request Forgery (CSRF)':
tbd Text |
Defending Option 2 against 'Cross-Site Request Forgery (CSRF)':
tbd Text |
Defending Option 3 against 'Cross-Site Request Forgery (CSRF)':
tbd (ganze Breite) Text | |
How Do I Prevent 'Cross-Site Request Forgery (CSRF)'?
Text
| |
Impact to the User
Text |
How Do I Prevent 'Cross-Site Request Forgery (CSRF)'?
Text |
References
|
Defending Option 1 against 'Cross-Site Request Forgery (CSRF)':
tbd Text |
Defending Option 2 against 'Cross-Site Request Forgery (CSRF)':
tbd Text |
Defending Option 3 against 'Cross-Site Request Forgery (CSRF)':
tbd (ganze Breite) Text | |
How Do I Prevent 'Cross-Site Request Forgery (CSRF)'?
Text | |
Impact to the User
Text |
How Do I Prevent 'Cross-Site Request Forgery (CSRF)'?
Text |
References
|
Defending Option 11 against 'Security Misconfiguration':
tbd Text |
Defending Option 2 against 'Security Misconfiguration':
tbd Text |
Defending Option 3 against 'Security Misconfiguration':
tbd (ganze Breite) Text | |
How Do I Prevent 'Security Misconfiguration'?
Text | |
Impact to the User
Text |
How Do I Prevent 'Security Misconfiguration'?
Text |
References
|
Defending Option 1 against 'Cross-Site Request Forgery (CSRF)':
tbd Text |
Defending Option 2 against 'Cross-Site Request Forgery (CSRF)':
tbd Text |
Defending Option 3 against 'Cross-Site Request Forgery (CSRF)':
tbd (ganze Breite) Text | |
Impact to the User
Text |
How Do I Prevent 'Cross-Site Request Forgery (CSRF)'?
Text |
How Do I Prevent 'Cross-Site Request Forgery (CSRF)'?
Text | |
References
|
← Top_10_fuer_Entwickler/A4_Unsichere direkte Objektreferenzen | Top_10_fuer_Entwickler/A6_Sicherheitsrelevante Fehlkonfiguration → |
