Avant-propos pour les programmeurs expérimentés

Threads locaux dans Flask

L’une des décisions de conception de Flask était que les tâches simples devaient être simples ; elles ne devaient pas nécessiter beaucoup de code et pour autant elles ne devaient pas vous limiter. Pour cette raison, Flask a fait quelques choix de conception que certaines personnes peuvent trouver surprenants ou peu orthodoxes. Par exemple, Flask utilise des objets threads locaux en interne, de sorte que vous n’avez pas besoin de faire circuler des objets d’une fonction à l’autre au sein d’une requête afin de rester threadsafe. Cette approche est pratique, mais nécessite un contexte de requête valide pour l’injection de dépendances ou lorsque l’on tente de réutiliser du code qui utilise une valeur liée à la requête. Le projet Flask est honnête à propos des threads locaux, ne les cache pas, et indique dans le code et la documentation où ils sont utilisés.

Développer pour le Web avec prudence

Gardez toujours la sécurité à l’esprit lorsque vous créez des applications web.

Si vous écrivez une application web, vous autorisez probablement les utilisateurs à s’inscrire et à laisser leurs données sur votre serveur. Les utilisateurs vous confient des données. Et même si vous êtes le seul utilisateur susceptible de laisser des données dans votre application, vous voulez quand même que ces données soient stockées de manière sécurisée.

Malheureusement, il existe de nombreuses façons de compromettre la sécurité d’une application web. Flask vous protège contre l’un des problèmes de sécurité les plus courants des applications web modernes : le cross-site scripting (XSS). À moins que vous ne marquiez délibérément du HTML non sécurisé comme étant sécurisé, Flask et le moteur de modèles sous-jacent Jinja2 vous couvrent. Mais il existe de nombreuses autres façons de causer des problèmes de sécurité.

La documentation vous mettra en garde contre les aspects du développement Web qui nécessitent une attention particulière en matière de sécurité. Certains de ces problèmes de sécurité sont bien plus complexes qu’on ne le pense, et nous sous-estimons tous parfois la probabilité qu’une vulnérabilité soit exploitée - jusqu’à ce qu’un attaquant malin trouve le moyen d’exploiter nos applications. Et ne pensez pas que votre application n’est pas assez importante pour attirer un attaquant. Selon le type d’attaque, il y a de fortes chances que des robots automatisés cherchent à remplir votre base de données de spam, de liens vers des logiciels malveillants, etc.

Flask n’est pas différent d’une autre infrastructure logicielle dans la mesure où vous, en tant que développeur, devez construire avec prudence, en surveillant les vulnérabilités lors de la construction selon vos besoins.