#+TITLE: Cross-Site Scripting (XSS)
#+OPTIONS: num:nil
#+DATE: <2026-06-01 Mon 10:21>
#+filetags: :learning:notes:
#+COMMENTS: t
#+SLUG: cross-site-scripting-xss

* Definition:

- Cross Site Scripting (XSS) is a type of security vulnerability typically found in web applications. It allows attackers to inject malicious scripts into content from otherwise trusted websites.

[[../../assets/images/career/2026-06-01-xss-attack.webp]]

* Types of XSS:

** 1. Stored XSS / Persistent XSS / Type 2 XSS:
The malicious script is permanently stored on the target server, such as in a database, message forum, visitor log, comment field, etc. When a user requests the stored information, the malicious script is served as part of the web page.

Example: An attacker posts a comment containing a malicious script on a blog. When other users view the comment, the script executes in their browsers, potentially stealing their cookies or performing other malicious actions.
   
** 2. Reflected XSS / Non-Persistent XSS / Type 1 XSS:
The malicious script is reflected off a 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 XSS is delivered to victims via another route, such as in an email or a third-party web site.

Example: An attacker crafts a URL that includes a malicious script. When a user clicks on the link, the script is reflected off the server and executed in the user's browser.

** 3. DOM-based XSS:
The vulnerability exists in the client-side code rather than the server-side code. The malicious script is executed as a result of modifying the DOM (Document Object Model) environment in the victim's browser, which causes the client-side code to execute in an unintended manner.

Example: An attacker manipulates the URL of a web page to include a malicious script. When the page processes the URL, it executes the script in the user's browser.

* Prevention:

- Input Validation: Ensure that all user input is properly validated and sanitized before being processed or stored. This includes using whitelisting techniques to allow only expected input.

- Output Encoding: Encode output to ensure that any potentially malicious scripts are rendered harmless when displayed in the browser. This can be done using functions that convert special characters to their corresponding HTML entities.

- Content Security Policy (CSP): Implement a Content Security Policy to restrict the sources from which scripts can be loaded and executed. This can help mitigate the impact of XSS attacks.

- Use Security Libraries: Utilize security libraries and frameworks that provide built-in protection against XSS vulnerabilities.
