Secure Flask -Anwendungen mit GuniCorn, Nginx und Verschlüsseln
BereitstellenFlask ist ein Python -Framework zum Erstellen von Webanwendungen. Mit Flask können Entwickler das Routing leicht definieren, HTTP -Anforderungen und Antworten verarbeiten und dynamische Inhalte mithilfe von Jinja2 -Vorlagen rendern. Es unterstützt auch Erweiterungen, mit denen Entwickler Funktionen wie Datenbankzugriff, Formulierung und Benutzerauthentifizierung integrieren können.
In diesem Artikel wird erläutert, wie Sie mit Gunicorn -Anwendungen und CSRF -Schutz- und Inhaltssicherheitsrichtlinien (CSP) implementieren. Wir werden auch einen Reverse -Proxy mit Nginx einrichten und ein kostenloses SSL -Zertifikat über LECTS Encrypt zum Implementieren von HTTPS beantragen.
Bereitstellung auf vultroptimierter Cloud-Instanz
Demo -Anwendungscode -Datei
hinzufügensudo apt install python3-venv
python3 -m venv myenv
source myenv/bin/activate
Demo -Anwendungscode -Datei
hinzufügengit clone https://github.com/mayankdebnath/flask-todo-demo.git
cd flask-todo-demo/sample/
pip install flask gunicorn
ufw allow 5000
Cross-Site Request Forgery (CSRF) ist eine Sicherheitsanfälligkeit, mit der ein Angreifer nicht autorisierte Anfragen an verschiedene Websites stellen kann, die vom Benutzer vertrauen, die eine angemeldete Sitzung auf einer vertrauenswürdigen Website verwenden. WTForms ist eine Flask -Erweiterung, die den CSRF -Schutz standardmäßig integriert, um CSRF -Angriffe zu verhindern.
Inhaltssicherheitsrichtlinie (CSP) ist eine zusätzliche Sicherheitsebene für Webanwendungen, die sie vor böswilligen Angriffen schützen. CSP gibt an, in welchen Ressourcen der Browser auf einer bestimmten Webseite geladen werden kann. In der Regel konfiguriert der Website -Administrator den CSP, indem der Serverantwort der Webseite spezielle Header hinzugefügt wird. Der Browser erhält dann den CSP -Header und versteht, welche Ressourcen geladen werden dürfen. Talisman ist eine Flask -Erweiterung, die den Prozess des Hinzufügens von CSP zu Flask -Anwendungen vereinfacht.
pip install flask-wtf talisman
nano app.py
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', )
from flask_wtf.csrf import CSRFProtect app.config['SECRET_KEY'] = 'your_secret_key_here' csrf = CSRFProtect(app) csrf._csrf_request_token_key = 'X-CSRFToken'
Speichern und schließen Sie die Datei.
cd templates
nano index.html
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); } } });
Speichern und schließen Sie die Datei.
8. Beenden Sie das Vorlagenverzeichnis: cd ..
Konfigurieren Sie Nginx als Reverse Proxy
nginx fungiert als Reverse -Proxy zwischen dem Webserver und dem Client. Es startet eingehende Anforderungen basierend auf Ihren Anforderungskonfigurationseinstellungen. In diesem Abschnitt konfigurieren wir die Anwendung für Reverse -Proxying für effiziente Anforderungsverarbeitung und Lastausgleich. Wir beantragen auch ein kostenloses SSL -Zertifikat von Let's Encrypt, um HTTPS zu implementieren, wodurch die Kommunikation zwischen Benutzern und Webservern geschützt wird.
ns1.vultr.com
und ns2.vultr.com
. sudo apt install nginx
sudo nano /etc/nginx/sites-available/app.conf
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; } }
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
(ersetzen Sie Beispiel.com durch Ihren Domänennamen) gunicorn -b 0.0.0.0:5000 app:app
https://<your_domain></your_domain>
auf Ihre Flask -App zugreifen. Mach mehr mit der Python -App auf Vultr
Schlussfolgerung
In diesem Artikel wird untersucht, wie Flask -Anwendungen mithilfe von Nginx Reverse -Proxy und Gunicorn bereitgestellt und CSRF -Schutz und CSP implementiert werden. Wir schützen auch die Sicherheit unserer Anwendungen, indem wir SSL -Zertifikate hinzufügen und den HTTPS -Zugriff aktivieren.
Dieser Artikel wird von Vultr gesponsert. Vultr ist die weltweit größte private Cloud Computing -Plattform. Vultr wird von Entwicklern geliebt und hat mehr als 1,5 Millionen Kunden in 185 Ländern flexible und skalierbare globale Cloud -Computing-, Cloud -GPU-, Bare -Metal- und Cloud -Speicherlösungen zur Verfügung gestellt. Erfahren Sie mehr über Vultr
Das obige ist der detaillierte Inhalt vonBereitstellung von Flask -Anwendungen in Vultrieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!