Skip to content

Conversation

david-a-wheeler
Copy link
Contributor

This adds a lab to practice countering
cross-site scripting (XSS) vulnerabilities.
I decided to use Python, Flask, and Jinja2,
as they're common and easy to exaplain.

Also, Jinja2 and Flask have a quirk - Jinja2 doesn't escape by default, but when brought in via Flask,
Flask enables it. That gives us an easy excuse to
discuss how to configure templating systems as necessary.

I ended up making this a multi-part lab.
That seemed like the best way to illustrate some important concepts when talking about how to escape values at scale.

This adds a lab to practice countering
cross-site scripting (XSS) vulnerabilities.
I decided to use Python, Flask, and Jinja2,
as they're common and easy to exaplain.

Also, Jinja2 and Flask have a quirk - Jinja2 doesn't
escape by default, but when brought in via Flask,
Flask enables it. That gives us an easy excuse to
discuss how to configure templating systems as necessary.

I ended up making this a multi-part lab.
That seemed like the best way to illustrate some important concepts
when talking about how to escape values at scale.

Signed-off-by: David A. Wheeler <[email protected]>
Signed-off-by: David A. Wheeler <[email protected]>
@david-a-wheeler david-a-wheeler merged commit 4f4be37 into main Oct 11, 2024
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant