Cross-Site Scripting ¶
Cross-site scripting (XSS) is a type of computer security vulnerability typically found in web applications that enables malicious attackers to inject client-side script into web pages viewed by other users. An exploited cross-site scripting vulnerability can be used by attackers to bypass access controls such as the same origin policy.
There are two categories of XSS attacks: stored and reflected.
Stored¶
Stored attacks are those where the injected code is permanently stored on the target servers, such as in a database, in a message forum, visitor log, comment field, etc. The victim then retrieves the malicious script from the server when it requests the stored information.
Reflected¶
Reflected attacks are those where the injected code is reflected off the web server, such as in an error message, search result, or any other response that includes some or all of the input sent to the server as part of the request. Reflected attacks are delivered to victims via another route, such as in an e-mail message, or on some other web server. When a user is tricked into clicking on a malicious link or submitting a specially crafted form, the injected code travels to the vulnerable web server, which reflects the attack back to the user’s browser. The browser then executes the code because it came from a "trusted" server.
Prevention¶
There are two primary defenses against XSS: input validation and escaping. An important aspect here is what automatic escaping your template engine does for you.
Users should refer to the OWASP Cross-Site Scripting Prevention Cheat Sheet for details on appropriate escaping.
-
Wiki content is available under a Creative Commons 3.0 License.
