Cross-site scripting (XSS) via safeseq disabling autoescape for template variable in Django

High Risk cross-site-scripting
pythondjangotemplatesafeseqxssweb

What it is

XSS vulnerability in Django templates where the safeseq filter is applied to template variables, marking sequence items as safe and bypassing Django's automatic HTML escaping, allowing untrusted HTML content to be rendered directly into pages.

â„šī¸ Configuration Fix

Configuration changes required - see explanation below.

💡 Explanation

â„šī¸ Configuration Fix

Configuration changes required - see explanation below.

💡 Explanation

Why it happens

The safeseq filter is applied to sequences containing user-controlled data, disabling escaping.

Root causes

Safeseq Filter on User Data

The safeseq filter is applied to sequences containing user-controlled data, disabling escaping.

Bypassing Auto-Escaping

Safeseq filter bypasses Django's built-in XSS protection by marking content as safe for rendering.

Fixes

1

Remove safeseq Filter and Rely on Auto-Escaping

Remove the safeseq filter to let Django automatically escape all template variables.

2

Use mark_safe Only for Trusted Content

Only mark content as safe in Python after proper sanitization and validation.

3

Use format_html for Building HTML Safely

Use Django's format_html and format_html_join to build HTML while escaping user-supplied values.

Detect This Vulnerability in Your Code

Sourcery automatically identifies cross-site scripting (xss) via safeseq disabling autoescape for template variable in django and many other security issues in your codebase.