Maison >développement back-end >Tutoriel Python >Comment déployer des applications FLASK sur Vultr
Déployer des applications de ballon sécurisées avec Gunicorn, Nginx et Let's Encrypt
FLASK est un cadre Python pour la création d'applications Web. Avec Flask, les développeurs peuvent facilement définir le routage, traiter les demandes et les réponses HTTP et rendre le contenu dynamique à l'aide de modèles Jinja2. Il prend également en charge les extensions qui permettent aux développeurs d'intégrer des fonctionnalités telles que l'accès à la base de données, le traitement de formulaire et l'authentification des utilisateurs.
Cet article expliquera comment utiliser Gunicorn pour déployer des applications FLASK et implémenter les politiques de protection et de sécurité du contenu CSRF (CSP). Nous allons également configurer un proxy inversé à l'aide de NGINX et demander un certificat SSL gratuit via Let's Encrypt pour implémenter HTTPS.
Déployer sur l'instance de cloud optimisée vultr
Ajouter un fichier de code d'application de démonstration
sudo apt install python3-venv
python3 -m venv myenv
source myenv/bin/activate
Ajouter un fichier de code d'application de démonstration
git clone https://github.com/mayankdebnath/flask-todo-demo.git
cd flask-todo-demo/sample/
pip install flask gunicorn
ufw allow 5000
Le falsification des demandes de site transversal (CSRF) est une vulnérabilité qui permet à un attaquant de faire des demandes non autorisées à différents sites Web fiables par l'utilisateur à l'aide d'une session connectée sur un site Web de confiance. WTFORMS est une extension FLASK qui intègre la protection CSRF par défaut pour empêcher les attaques CSRF.
La politique de sécurité du contenu (CSP) est une couche de sécurité supplémentaire pour les applications Web qui les protègent contre les attaques malveillantes. CSP indique quelles ressources le navigateur permet de charger sur une page Web spécifique. En règle générale, l'administrateur du site Web configure le CSP en ajoutant des en-têtes spéciaux à la réponse du serveur de la page Web, et le navigateur reçoit ensuite l'en-tête CSP et comprend quelles ressources sont autorisées à se charger. Talisman est une extension de flacon qui simplifie le processus d'ajout de CSP aux applications FLASK.
pip install flask-wtf talisman
nano app.py
<code class="language-python">from talisman import Talisman talisman = Talisman( app, content_security_policy={ 'default-src': ['\'self\''], 'script-src': ['\'self\'', '\'unsafe-inline\'', 'https://code.jquery.com'], 'style-src': ['\'self\'', '\'unsafe-inline\'', 'https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css', 'https://todoapp5.ddns.net/static/styles.css', 'https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css'], }, force_https=True, session_cookie_secure=True, frame_options='DENY', )</code>
<code class="language-python">from flask_wtf.csrf import CSRFProtect app.config['SECRET_KEY'] = 'your_secret_key_here' csrf = CSRFProtect(app) csrf._csrf_request_token_key = 'X-CSRFToken'</code>
Enregistrer et fermer le fichier.
cd templates
nano index.html
<code class="language-javascript">var csrfToken = $('input[name="csrf_token"]').val(); $.ajaxSetup({ beforeSend: function(xhr, settings) { if (!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(settings.type) && !this.crossDomain) { xhr.setRequestHeader("X-CSRFToken", csrfToken); } } });</code>
Enregistrer et fermer le fichier.
8. Quittez le répertoire des modèles: cd ..
Configurer Nginx comme proxy inverse
Nginx agit comme un proxy inverse entre le serveur Web et le client. Il démarre les demandes entrantes en fonction des paramètres de configuration de votre demande. Dans cette section, nous configurerons l'application pour la proxyation inverse pour un traitement efficace de demande et un équilibrage de charge. Nous demanderons également un certificat SSL gratuit de Let's Encrypt pour implémenter HTTPS, protégeant ainsi la communication entre les utilisateurs et les serveurs Web.
ns1.vultr.com
et ns2.vultr.com
. sudo apt install nginx
sudo nano /etc/nginx/sites-available/app.conf
<code class="language-nginx">server { listen 80; listen [::]:80; server_name <your_domain>; location / { proxy_pass http://127.0.0.1:5000/; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }</your_domain></code>
sudo ln -s /etc/nginx/sites-available/app.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
sudo ufw allow 80/tcp && sudo ufw allow 443/tcp
sudo snap install --classic certbot
sudo certbot --nginx -d example.com -d www.example.com
(Remplacez l'exemple.com par votre nom de domaine) gunicorn -b 0.0.0.0:5000 app:app
https://<your_domain></your_domain>
. Faites plus avec l'application Python sur vultr
Conclusion
Cet article explore comment déployer des applications FLASK à l'aide de Nginx Inverse Proxy et Gunicorn, et d'implémenter la protection CSRF et le CSP. Nous protégeons également la sécurité de nos applications en ajoutant des certificats SSL et en permettant à l'accès HTTPS.
Cet article est parrainé par Vultr. Vultr est la plus grande plate-forme de cloud computing privée au monde. Vultr est aimé des développeurs et a fourni des solutions mondiales de cloud computing, cloud computing flexibles et évolutives, en métal nu et en nuage à plus de 1,5 million de clients dans 185 pays. En savoir plus sur Vultr
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!