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
Abridged XSS Prevention Cheat Sheet
From OWASP
DRAFT CHEAT SHEET - WORK IN PROGRESS
Introduction
Cross site scripting is the most common web vulnerability. It represents a serious threat because cross site scripting allows evil attacker code to run in a victim’s browser. More details about XSS can be found here: <a href="https://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29">https://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29</a>
XSS Prevention Overview
| Data Type | Context | Code Sample | Defense |
|---|---|---|---|
| String | HTML Body | <span>UNTRUSTED DATA</span> | |
| String | "safe" HTML Attributes align, alink, alt, bgcolor, border, cellpadding, cellspacing, class, color, cols, colspan, coords, dir, face, height, hspace, ismap, lang, marginheight, marginwidth, multiple, nohref, noresize, noshade, nowrap, ref, rel, rev, rows, rowspan, scrolling, shape, span, summary, tabindex, title, usemap, valign, value, vlink, vspace, width | <input type="text" name="fname" value="UNTRUSTED DATA"> |
|
| String | GET Parameter | <a href="/site/search?value=UNTRUSTED DATA">clickme</a> | |
| String | Untrusted URL rendered in an HREF tag (or other HTML link context) | <a href="UNTRUSTED DATA">clickme</a> <iframe src="UNTRUSTED DATA" /> |
|
| String | CSS | <div style="width: UNTRUSTED DATA;">Selection</div> |
|
| String | JavaScript | <script>var currentValue='UNTRUSTED DATA';</script> |
|
| String | HTML Comment | <!-- UNTRUSTED DATA--> | TODO |
| String | JavaScript Comment | /* UNTRUSTED DATA */ | TODO |
| HTML Text | HTML Body | <span>UNTRUSTED HTML</span> |
|
| String | DOM XSS | TODO |
|
| String | AJAX/JSON Parsing | TODO |
|
| String | AJAX/XML Parsing | TODO | TODO |
Output Encoding Types
| Encoding Type | Encoding Mechanism |
|---|---|
| HTML Entity Encoding | & --> & < --> < > --> > " --> " ' --> ' ' is not recommended / --> / forward slash is included as it helps end an HTML entity |
| HTML Attribute Encoding | TODO |
| URL Encoding | TODO |
| JavaScript HEX Encoding | TODO |
| CSS Hex Encoding | TODO |
Related Articles
OWASP Cheat Sheets Project Homepage
Authors and Primary Editors
Jim Manico - jim [at] owasp.org
Jeff Williams - jeff [at] aspectsecurity.com