Input sanitization helps keep your web app safe by cleaning user data before using it. It stops bad data from causing problems.
Input sanitization in Flask
Introduction
Syntax
Flask
from flask import Flask, request, escape app = Flask(__name__) @app.route('/submit', methods=['POST']) def submit(): user_input = request.form['user_input'] safe_input = escape(user_input) return f"You entered: {safe_input}"
escape() converts special characters to safe HTML entities.
Always sanitize before displaying or storing user input.
Examples
Flask
from flask import escape raw = '<script>alert(1)</script>' safe = escape(raw) print(safe)
Flask
user_input = request.args.get('name', '') safe_name = escape(user_input)
escape from MarkupSafe safely escapes HTML content.Flask
from markupsafe import escape raw_html = '<b>bold</b>' safe_html = escape(raw_html) print(safe_html)
Sample Program
This Flask app shows a form. When you submit text, it cleans the input and shows it safely on the page.
Flask
from flask import Flask, request, escape app = Flask(__name__) @app.route('/') def form(): return ''' <form method="POST" action="/submit"> Enter text: <input name="user_input"> <input type="submit"> </form> ''' @app.route('/submit', methods=['POST']) def submit(): user_input = request.form['user_input'] safe_input = escape(user_input) return f"You entered: {safe_input}"
Important Notes
Sanitizing input is not the same as validating it. Validation checks if input is correct; sanitization cleans it.
Use escape() from Flask or MarkupSafe to prevent cross-site scripting (XSS) attacks.
Always sanitize data before showing it in HTML pages.
Summary
Input sanitization cleans user data to keep your app safe.
Use escape() to convert special characters to safe HTML.
Sanitize all user input before displaying or storing it.
Practice
1. What is the main purpose of input sanitization in a Flask application?
easy
Solution
Step 1: Understand input sanitization
Input sanitization means cleaning user data to avoid harmful code or attacks.Step 2: Identify the main goal in Flask
In Flask, sanitizing input helps prevent security problems like Cross-Site Scripting (XSS).Final Answer:
To clean user input and prevent security issues like XSS -> Option AQuick Check:
Input sanitization = prevent XSS [OK]
Hint: Sanitize input to stop harmful code from running [OK]
Common Mistakes:
- Thinking sanitization speeds up app
- Confusing sanitization with output formatting
- Ignoring security risks of unsanitized input
2. Which Flask function is commonly used to sanitize user input before displaying it in HTML?
easy
Solution
Step 1: Recall Flask's sanitization tools
Flask provides theescape()function to convert special characters to safe HTML entities.Step 2: Match function to purpose
Onlyescape()safely converts input to prevent HTML injection.Final Answer:
escape() -> Option AQuick Check:
escape() = sanitize HTML input [OK]
Hint: Use escape() to convert special HTML characters safely [OK]
Common Mistakes:
- Using non-existent functions like sanitize()
- Confusing validation with sanitization
- Assuming clean() is a Flask function
3. What will be the output of this Flask code snippet?
from flask import escape user_input = '' safe_input = escape(user_input) print(safe_input)
medium
Solution
Step 1: Understand what escape() does
Theescape()function converts special HTML characters like <, > to safe codes like < and >.Step 2: Apply escape() to the input string
The input '' becomes '<script>alert(1)</script>'.Final Answer:
<script>alert(1)</script> -> Option DQuick Check:
escape() output = <script>... [OK]
Hint: escape() changes < and > to < and > [OK]
Common Mistakes:
- Expecting raw HTML output
- Confusing escape() with removing tags
- Thinking escape() causes syntax errors
4. Identify the error in this Flask code snippet for input sanitization:
from flask import escape
user_input = request.args.get('name')
safe_input = escape(user_input)
return safe_inputmedium
Solution
Step 1: Check the imports
The code importsescapefrom Flask but usesrequestwithout importing it.Step 2: Identify the resulting error
This causes aNameErrorbecauserequestis undefined.Final Answer:
Missing import of request from flask -> Option CQuick Check:
Missingfrom flask import request[OK]
Hint: Import request from flask before using it [OK]
Common Mistakes:
- Thinking None causes TypeError in escape()
- Believing escape() should not be used on user input
- Assuming input needs int conversion
5. You want to safely display user comments on a Flask webpage. Which approach correctly sanitizes and stores the input to prevent XSS attacks?
hard
Solution
Step 1: Understand best practice for input sanitization
Sanitize user input when displaying it, not before storing, to keep original data intact.Step 2: Apply escape() at output time
Usingescape()only when showing data prevents XSS without losing original input.Final Answer:
Store raw input in database, sanitize with escape() only when displaying -> Option BQuick Check:
Sanitize on output, not input [OK]
Hint: Escape user data only when displaying it [OK]
Common Mistakes:
- Sanitizing before storing causes data loss
- Sanitizing twice is unnecessary
- Ignoring XSS risks by trusting browser
Recommended
Ready to prove it?
Pass the test and this pattern moves unknown
10 questions ~5 mineasy hard
