Wenn Sie gerade erst mit der Webentwicklung oder Node.js-Reise beginnen, wissen Sie möglicherweise nicht, wie wichtig es ist, Ihre App zu sichern.
Express.js bietet eine leistungsstarke Lösung zum Erstellen von Backend-Webanwendungen, mangelt es jedoch an Sicherheit. Wenn Sie eine Webanwendung erstellen, benötigen Sie angemessene Sicherheitsmaßnahmen, um die Daten Ihrer Benutzer zu schützen.
Glücklicherweise gibt es Methoden, mit denen Sie die Sicherheit Ihrer Express.js-Anwendungen erhöhen können. Diese Tipps tragen alle dazu bei, die Sicherheit Ihrer Anwendungen durch verschiedene Ansätze zu erhöhen.
Richten Sie eine Express.js-Anwendung ein
Beginnen Sie mit der Einrichtung einer Demo Express.js-Webserver verwenden npm, der Node Package Manager. Erstellen Sie lokal einen Projektordner und ändern Sie das Verzeichnis auf Ihrem Terminal dorthin.
mkdir Express-Projekt
CD-Express-Projekt
Als nächstes erstellen Sie eine package.json Datei im Stammverzeichnis.
npm init -y
Fahren Sie fort und installieren Sie Express.js.
npm install express
Erstellen Sie abschließend eine server.js Datei im Stammverzeichnis Ihres Projektordners und fügen Sie den folgenden Code hinzu, um einen einfachen Webserver einzurichten.
const ausdrücken = erfordern("äußern")
const app = express()
const PORT = process.env. HAFEN || 5000app.get("/", (req, res) => {
res.json("Hallo Welt!")
})
app.listen (PORT, () => {
Konsole.Protokoll(`Server wird gestartet http://localhost:${PORT}`)
})
Starten Sie den Server mit diesem Befehl:
Knoten server.js
Jetzt können Sie einige der Maßnahmen erkunden, mit denen Sie Ihre Express.js-Anwendung sichern können.
1. Sichern von Express.js-Anwendungen mit Helmet
Helm ist eine Node.js-Middleware, die durch das Festlegen verschiedener HTTP-Sicherheitsheader zur Sicherung serverseitiger Apps beiträgt. Diese Header bieten wesentliche Abwehrmechanismen dagegen Häufige Sicherheitslücken im Backend, wie Cross-Site-Scripting (XSS), Cross-Site-Request-Forgery (CSRF) und viele mehr.
Express.js konfiguriert standardmäßig keine HTTP-Sicherheitsheader, wodurch eine potenzielle Sicherheitslücke entsteht, die potenziell sensible Header offenlegt. Mithilfe dieser Informationen können sich böswillige Akteure möglicherweise unbefugten Zugriff verschaffen oder Ihre App auf andere Weise stören.
Helmet fungiert als wichtiger Schutzschild und stellt sicher, dass die HTTP-Antworten der Anwendung die erforderlichen Sicherheitsmaßnahmen ergreifen, wodurch die potenzielle Angriffsfläche erheblich reduziert wird.
Erkundung der Sicherheit von Express.js-Anwendungen ohne Helm
Untersuchen Sie bei laufendem Server die Header der Anwendung. Fahre fort und Stellen Sie mithilfe von Postman HTTP-Anfragen an die API oder ein anderer Client, der Antwortheader anzeigt. Die meisten Browser enthalten eine Reihe von Entwicklertools, die Ihnen dies ermöglichen.
Wenn Sie Anfragen an den Home-Endpunkt senden, sollten Sie ähnliche Ergebnisse beobachten Überschriften Abschnitt der Antwort in Postman.
Beachten Sie die X-Powered-By Header. In der Regel verwenden Back-End-Technologien diesen Header, um das Framework oder andere Software anzugeben, die die Webanwendung unterstützt. Normalerweise sollten Sie das entfernen X-Powered-By Header in einer Produktionsumgebung.
Auf diese Weise verhindern Sie, dass potenzielle Angreifer wertvolle Informationen erhalten, die sie zur Ausnutzung bekannter Schwachstellen in Ihrem Technologie-Stack nutzen könnten.
Testen Sie die Sicherheitskonfiguration des Express.js-Servers
Um den Sicherheitsstatus Ihrer Anwendungen zu beurteilen, verwenden wir die Sicherheitsheader Online-Tool. Diese App wurde speziell für die Bewertung der Sicherheitskonfiguration von HTTP-Headern für clientseitige und serverseitige Anwendungen entwickelt.
Zunächst müssen Sie Ihren lokalen Express.js-Server über das Internet zugänglich machen. Um dies zu erreichen, gibt es zwei mögliche Ansätze: die Bereitstellung Ihrer Express.js-Anwendung auf einem Cloud-Server oder die Verwendung von ngrok.
Um es zu benutzen, Laden Sie den NGROK herunter ZIP-Datei, extrahieren Sie die ausführbare Datei und starten Sie die Anwendung. Führen Sie dann den folgenden Befehl aus, um Ihren lokalen Express.js-Server mit ngrok zu hosten.
ngrok http 5000
ngrok gibt einige kurze Informationen aus, die wie folgt aussehen:
Kopieren Sie das bereitgestellte Weiterleitungs-URL und fügen Sie es in die ein Sicherheitsheader' Eingabefeld und klicken Sie auf Scan Taste.
Sobald die Sicherheitsbewertung abgeschlossen ist, sollten Sie einen ähnlichen Bericht erhalten.
Basierend auf dem Bericht ist es offensichtlich, dass der Express.js-Server eine schlechte Bewertung erhalten hat F Grad. Diese niedrige Bewertung ist auf das Fehlen wesentlicher HTTP-Sicherheitsheader in der Serverkonfiguration zurückzuführen – ihr Fehlen macht den Server anfällig für potenzielle Sicherheitsrisiken.
Integrieren Sie Helmet in die Express.js-Anwendung
Machen Sie jetzt weiter und integrieren Sie Helmet in Ihre Express.js-Anwendung. Führen Sie den folgenden Befehl aus, um die Abhängigkeit zu installieren.
npm Helm installieren
Aktualisieren Sie Ihre server.js-Datei und importieren Sie Helmet.
const Helm = erfordern("Helm")
Fügen Sie nun Helmet zu Ihrer Express.js-Anwendung hinzu.
app.use (helmet())
Zum Schluss starten Sie den Entwicklungsserver und kopieren den Weiterleitungslink von Ngroks Terminal und fügen Sie es in das ein Sicherheitsheader Eingabefeld, um den lokalen Server erneut zu scannen. Sobald der erneute Scan abgeschlossen ist, sollten ähnliche Ergebnisse wie diese angezeigt werden:
Nach der Integration von Helmet fügt Express.js mehrere wichtige Sicherheitsheader in die HTTP-Antwort ein. Diese erhebliche Verbesserung führte dazu, dass die Express.js-Anwendung auf eine umgestellt wurde A Grad.
Obwohl Helmet keine narrensichere Lösung ist, erhöht es die Gesamtsicherheit Ihrer Express.js-Anwendung erheblich.
2. Sichern von Express.js-Anwendungen mit Joi, einer Eingabevalidierungsbibliothek
Joi ist eine Eingabevalidierungsbibliothek, die zur Sicherung von Express.js-Apps beiträgt, indem sie eine praktische Möglichkeit zur Validierung und Bereinigung von Benutzereingaben bietet. Durch die Definition von Validierungsschemata mit Joi können Sie die erwartete Struktur, Datentypen und Einschränkungen für eingehende Daten angeben.
Joi validiert die Eingabe anhand des definierten Schemas und stellt so sicher, dass sie die angegebenen Kriterien erfüllt. Dies trägt dazu bei, häufige Sicherheitslücken wie Dateneinschleusung, Cross-Site-Scripting (XSS) und andere Datenmanipulationsangriffe zu verhindern.
Befolgen Sie diese Schritte, um Joi in Ihre Anwendung zu integrieren.
- Installieren Sie Joi.
npm install joi
- Importieren Sie Joi in Ihre server.js-Datei.
const Joi = erfordern('joi');
- Erstellen Sie ein Joi-Datenvalidierungsschema, das die erwartete Struktur und alle Einschränkungen für die Eingabedaten definiert.
const schema = Joi.object({
E-Mail: Joi.string().email().required(),
Passwort: Joi.string().min(5).max(16).erforderlich()
}); - Validieren Sie alle eingehenden Daten mithilfe des definierten Schemas.
const { Fehler, Wert } = schema.validate (req.body);
Wenn (Fehler) {
// Validierungsfehler behandeln
// Beispielsweise eine Fehlerantwort zurückgeben
zurückkehren res.status(400).json({ Fehler: Fehlerdetails[0].Nachricht });
}
Durch die Implementierung dieser Schritte können Sie die Eingabevalidierungsfunktionen von Joi nutzen, um Ihre Express.js-Anwendungen zu sichern. Dadurch wird sichergestellt, dass die eingehenden Daten definierte Einschränkungen erfüllen und potenzielle Sicherheitsbedrohungen durch Datenmanipulation verhindert werden.
3. Sichern von Express.js-Anwendungen mithilfe des CORS-Mechanismus
Cross-Origin Resource Sharing (CORS) ist ein Mechanismus, mit dem Webserver verwalten, welche Ursprünge – Clients oder andere serverseitige Anwendungen – auf ihre geschützten Ressourcen zugreifen können. Dieser Mechanismus trägt zum Schutz vor unbefugten Cross-Origin-Anfragen bei und verhindert Probleme wie Cross-Site-Scripting-Angriffe (XSS).
Gehen Sie folgendermaßen vor, um Express.js-Anwendungen mithilfe von CORS zu sichern:
- Installieren Sie das CORS-Paket.
npm install cors
- Erfordern und verwenden Sie CORS-Middleware in der Datei server.js.
const cors = erfordern('Cors');
app.use (cors());
Durch die Integration der CORS-Middleware in Ihre Express.js-Anwendung ermöglichen Sie Cross-Origin Resource Sharing. Dadurch wird sichergestellt, dass Sie potenzielle Sicherheitsrisiken im Zusammenhang mit Cross-Origin-Anfragen mindern.
Serverseitige Anwendungen einfach sichern
Sie können eine oder mehrere dieser wesentlichen Maßnahmen nutzen, um die Sicherheit Ihrer Express.js-Anwendungen zu erhöhen.
Zwar gibt es viele Maßnahmen und Ansätze zum Schutz Ihrer serverseitigen Anwendungen, die wichtigste Erkenntnis besteht jedoch darin, dass Sie der Sicherheit während des gesamten Entwicklungslebenszyklus Priorität einräumen sollten. Dies ist eine Aufgabe, die bereits in der Entwurfsphase beginnt und bis zur Bereitstellung fortgesetzt werden sollte.