Cross-site scripting High

User-controllable input must be sanitized before it's included in output used to dynamically generate a web page. Unsanitized user input can introduce cross-side scripting (XSS) vulnerabilities that can lead to inadvertedly running malicious code in a trusted context.

Detector ID
typescript/cross-site-scripting@v1.0
Category
Common Weakness Enumeration (CWE) external icon

Noncompliant example

1function crossSiteScriptingNoncompliant() {
2  let url = window.location.search.slice(1)
3
4  // Noncompliant: unsafe jQuery ajax request.
5  $.ajax({url: url, data: "Hello"})
6}

Compliant example

1import ESAPI from 'node-esapi'
2
3function crossSiteScriptingCompliant() {
4  let url = window.location.search.slice(1)
5
6  // Compliant: url is sanitized before ajax call.
7  url = ESAPI.encoder().encodeForURL(url)
8
9  $.ajax({url: url, data: "Hello"})
10}