Introduction
Lorsque vous renvoyez du HTML (le type de réponse par défaut dans Flask), toute valeur fournie par l'utilisateur affichée dans la sortie doit être escapée pour se prémunir contre les attaques par injection. Dans ce laboratoire, vous allez apprendre à utiliser escape pour y parvenir. De plus, les modèles HTML générés avec Jinja, présentés plus tard, le feront automatiquement. Pour l'instant, vous pouvez simplement utiliser escape pour le faire manuellement.
Échappement
Dans cette étape, vous allez apprendre à utiliser escape pour vous prémunir contre les attaques par injection.
- Ouvrez le fichier
html_escaping.pyet importez d'abord la classeFlasketescape.
from flask import Flask
from markupsafe import escape
- Ensuite, créez une instance de la classe
Flask.
app = Flask(__name__)
- Ensuite, nous utilisons le décorateur
route()pour créer une route/avec une fonction de vue appeléeescaping. Dans la fonction, définissez un extrait de code JavaScript et utilisezescapepour l'afficher comme du texte, en escapant tous les caractères qui ont des significations spéciales en HTML.
@app.route('/')
def escaping():
input = "<script>alert('XSS attack');</script>"
escaped_input = escape(input)
return f"User input: {escaped_input}"
- Créez un point d'entrée
maindu script pour démarrer l'application Flask sur le port 5000, en activant le mode debug.
if __name__ == "__main__":
app.run(host='0.0.0.0', port=5000, debug=True)
- Pour exécuter l'application, utilisez d'abord les commandes suivantes pour lancer l'application Flask dans le terminal :
python3 html_escaping.py
Ensuite, ouvrez l'onglet "Web 5000" situé en haut de l'interface, actualisez la page et vous devriez voir le message :

- Les balises
<script>sont affichées en toute sécurité comme du texte sans être exécutées en tant que JavaScript, démontrant la prévention d'une attaque XSS.
Résumé
Dans ce laboratoire, nous avons appris à utiliser escape pour échapper manuellement l'entrée. Cela peut être très utile lorsqu'il s'agit de traiter des attaques potentiellement dangereuses. Plus tard, nous apprendrons comment générer des modèles avec Jinja, qui peut le faire automatiquement et efficacement.



