La seguridad es un tema de suma importancia en la actualidad, si has llegado a este práctico tutorial seguramente Sein porque te preocupa el nivel de seguridad y fiabilidad de tus programas. Sigue leyendo para que aprendas a aumentar la seguridad de tu propia App.
Lassen Sie uns loslegen und unsere App mit Node.js unter Verwendung der richtigen Codierung, Tools und Handelsgewohnheiten sichern!
1. Anwenden sicherer Verschlüsselungsformulare
-
Erstens: Vermeiden Sie die Verwendung eval
Möglicherweise kennen Sie diese Informationen nicht, aber eval
puede abrir tu aplicación para ataques de inyección de código. Trata de no usarlo, pero si tienes que hacerlo, nunca inyectes entradas de Nutzername no validadas en eval
.
Eval ist nicht der einzige, der dies vermeidet: Tief im Inneren verwendet jeder der folgenden Ausdrücke eval:
setInterval (String, 2)
setTimeout (String, 2)
neue Funktion (String)
-
Zweitens: Versuchen Sie immer, die Anweisung zu verwenden 'Verwenden Sie streng'
Mit 'Verwenden Sie streng' tu puedes optar por usar una «variable» restringida de JavaScript. Esta variable, elimina algunos errores silenciosos y los desecha todo el tiempo.
'use strict' delete Object.prototype // TypeError var obj = {a: 1, a: 2} // Syntaxfehler
-
Drittens: Versuchen Sie, mit Fehlern umzugehen extreme Sorgfalt
In verschiedenen Fehlerszenarien kann Ihre Anwendung vertrauliche Daten über die zugrunde liegende Infrastruktur verlieren, z. X-Powered-By: Express
.
Stapelspuren werden nicht als Sicherheitslücken behandelt, sondern enthüllen häufig Informationen, die für einen Angreifer von Interesse sein können. Das Bereitstellen von Debugging-Informationen als Ergebnis fehlgeschlagener Vorgänge wird als schlechte Praxis angesehen. Sie sollten sie immer registrieren, aber niemals Benutzern zeigen.
-
Viertens: Versuchen Sie, eine zu machen statische Analyse aus Ihrer Datenbank
Die statische Analyse des Datenbankcodes Ihrer Anwendung kann viele Fehler erkennen. Dafür empfehlen wir die Verwendung ESLint mit dem Standard-Codestil.
Sicheres Ausführen Ihrer Dienste in der Produktion
Die Verwendung des richtigen Codestils reicht nicht aus, um Node.js-Anwendungen effizient zu schützen. Sie müssen auch vorsichtig sein, wie Sie Ihre Dienste in der Produktion ausführen.
-
Fünfte: Vermeiden Sie es, Ihre Prozesse mit Superuser-Rechten auszuführen
Leider sehen wir, dass dieser Fall häufig vorkommt: Entwickler führen ihre Node.js-Anwendung mit den Rechten für aus Super Userwie sie wollen, dass es auf Port 80 oder 443 gehört wird.
Esto está muy mal. En el caso de un error o Fehler, su proceso puede hacer caer todo el sistema, ya que tiene credenciales para hacer cualquier cosa.
En lugar de esto, lo que puedes hacer es configurar un Server o proxy HTTP para reenviar las solicitudes. Puede ser nginx o Apache.
-
Sechstens: Konfigurieren Sie die Header Erforderliches HTTP
Es gibt einige sicherheitsrelevante HTTP-Header, die Ihre Site festlegen sollte. Diese Überschriften sind:
- Strikte Transportsicherheit: este refuerza las conexiones seguras (HTTP sobre SSL/TLS) al servidor.
- X-Frame-Optionen: bietet Ihnen Clickjacking-Schutz
- X-XSS-Schutz: puede habilitar el filtro XSS (cross-site scripting) integrado en los Browser Netz más recientes.
- X-Content-Type-Optionen: este evita que los navegadores olfateen una respuesta alejada del Art des Inhalts declarado.
- La política de seguridad de Inhalt previene una amplia gama de ataques, incluyendo secuencias de comandos entre sitios y otras inyecciones entre sitios.
In Node.js ist es einfach, sie mit dem Helmmodul zu konfigurieren:
var express = erfordern ('express') var helmet = erfordern ('helm') var app = express () app.use (helmet ())
Helm ist auch für Koa erhältlich: Koa-Helm.
-
Siebtens: a ordnungsgemäße Sitzungsverwaltung
La siguiente lista de marcas debe ser establecida para cada Plätzchen:
- sichern: Osten Attribut le dice al Browser que sólo envíe la cookie si la petición se está enviando a través de HTTPS.
- HttpOnlyly: este atributo se utiliza para ayudar a prevenir ataques tales como Skripte cruzados, ya que no permite el acceso a la cookie a través de JavaScript.
-
Achte: Gründung von Cookie-Anwendungsumgebung
- Domain: este atributo se utiliza para comparar con el Domain del servidor en el que se está solicitando la Url. Si el dominio coincide o es un Subdomain, el atributo de ruta se comprobará a continuación.
- Pfad: Zusätzlich zur Domain können Sie den URL-Pfad angeben, für den das Cookie gültig ist. Wenn die Domain und der Pfad übereinstimmen, wird das Cookie auf Anfrage gesendet.
- läuft ab: Dieses Attribut wird verwendet, um dauerhafte Cookies zu setzen, da das Cookie erst abläuft, wenn das festgelegte Datum überschritten wird.
In Node.js können Sie dieses Cookie einfach mit dem Cookie-Paket erstellen. Auch dies ist ziemlich niedrig, so dass Sie wahrscheinlich einen Wrap wie die Cookie-Sitzung verwenden werden.
var cookieSession = require ('cookie-session') var express = require ('express') var app = express () app.use (cookieSession ({name: 'session', keys: [process.env.COOKIE_KEY1, process. env.COOKIE_KEY2]})) app.use (Funktion (req, res, next) {var n = req.session.views || 0 req.session.views = n ++ res.end (n + 'views') }) app.listen (3000)
Betrachten Sie die zu verwendenden Tools
Herzlichen Glückwunsch, Sie sind fast am Ende des Artikels! Wenn Sie diesem Tutorial gefolgt sind und die oben genannten Schritte gründlich und genau ausgeführt haben, müssen Sie nur einen Bereich in Bezug auf die Sicherheit von Node.j abdecken. Lassen Sie uns die richtigen Tools verwenden, um nach Modulschwachstellen zu suchen!
-
Neunte: Suche Schwachstellen mit Retire.js
Das Ziel von Remove.js soll Ihnen helfen, die Verwendung von Versionen von Modulen mit bekannten Schwachstellen zu erkennen.
Einfach installieren mit:
npm install -g entfernen
Führen Sie es danach mit dem Befehl aus abheben sucht im Verzeichnis nach Schwachstellen Knotenmodule. (Beachten Sie auch das remove.js funktioniert nicht nur mit Knotenmodulen, sondern auch mit Front-End-Bibliotheken).
-
Zehntens: Prüfen Sie Ihre Module mit dem Node CLI-Sicherheitsplattform
nsp
ist die Hauptbefehlszeilenschnittstelle für die Node-Sicherheitsplattform. Ermöglicht das Überwachen einer Datei package.json oder npm-shrinkwrap.json contra la API del NSP para comprobar si hay módulos vulnerables.
npm install nsp --global # Überprüfen Sie aus Ihrem Projektverzeichnis heraus die nsp-Prüfung
Die Sicherheit von Node.j ist doch keine große Sache, oder? Ich hoffe, dass Sie diese Regeln nützlich und notwendig gefunden haben, um Ihre Node.js-Anwendungen zu sichern, und dass Sie sie in Zukunft befolgen, da Sicherheit Teil Ihrer Arbeit ist. Herzliche Glückwünsche!