Anzeige
Anzeige
Ratgeber

Node.js: So kannst du deine Applikation schützen

Obwohl Node.js immer populärer wird, gibt es sehr wenige Security-Guidelines. In diesem Artikel findet ihr einige nützliche Tipps, wie ihr die Sicherheit eures Node.js-Projektes erhöhen könnt.

Von Mario Janschitz
2 Min.
Artikel merken
Anzeige
Anzeige

Mehr Sicherheit für Node.js (Bild: © tiero - Fotolia.com)


Gergely Nemeth hat in seinem Blog einige gute Hinweise geliefert, wie ihr die Sicherheit euerer Applikationen erhöhen könnt. In diesem Artikel zeigen wir euch einen Auszug.

Node.js und Eval

Wer seinen Code vor „Injections“ schützen möchte, sollte auf eval verzichten. Gerade wenn ihr eval für Benutzereingaben benutzt, tritt diese Lücke auf. Außerdem verlangsamt eval den Interpreter.

Node.js: Bitte im Strict mode

Anzeige
Anzeige

Mit dem Flag 'use strict'; könnt ihr unischtbare Fehler sichtbar machen und ihr werdet auf diese auch aufmerksam gemacht. Einige Beispiele:

Undeletable properties

"use strict";
delete Object.prototype; // TypeError  

Objekt-Literale müssen unique sein

"use strict";
var obj = {
    a: 1, 
    a: 2 
}; 
// syntax error

Ihr könnt eine vollständige Liste dieser „unsichtbaren Fehler“ bei Mozilla einsehen.

Anzeige
Anzeige

Code-Analyse mit Lint

Egal ob ihr JSLint, JSHint oder ESLint nutzt: Statische Codeanalysen helfen euch dabei viele Fehler bereits während des Schreibens zu entdecken.

Anzeige
Anzeige

Testen, Testen, Testen

Kaum jemand möchte seinen Code auch intensiv testen – sei es aus „Kostengründen“ oder weil ihr einfach ungern Unit-Tests schreibt. Tests sind aber eine Notwendigkeit und sollten daher durchgeführt werden, um zu gewährleisten, dass die App auch wirklich das tut, was in der Anforderungsanalyse festgelegt wurde. Natürlich sind Unit-Tests alleine nicht das einzige mittel, aber: Kennt ihr eigentlich die Test-Pyramide?

sudo node app.js ist böse

Der Applikation alle Rechte zu geben ist nicht in Ordnung, nur damit die App die Möglichkeit hat, an den Ports 80 und 443 zu lauschen. Statt dessen solltet ihr einen HTTP-Proxy aufsetzen, der die Anfragen durchleitet – dabei ist egal ob nginx oder Apache.

Anzeige
Anzeige

Command Injections verhindern

child_process.exec('ls', function (err, data) {
    console.log(data);
});

Im Hintergrund wird bei child-process.exec nämlich /bin/sh ausgeführt. Somit ist es ein bash-Interpreter und kein Launcher. Problematisch wird dieser Umstand, wenn Benutzereingaben durch diese Methode wandern, die dann wiederum schädlichen Code ausführen könnten.

Ein Einfacher Fix dazu ist die Verwendung von child_process.execFile Mehr zu Command Injections gib es hier.

Mehr zu Node.js-Sicherheit und weiteren Beispielen findet ihr hier und beim „Node.js Security Project“.

Anzeige
Anzeige

Ebenfalls interessant:

via blog.risingstack.com

Mehr zu diesem Thema
Fast fertig!

Bitte klicke auf den Link in der Bestätigungsmail, um deine Anmeldung abzuschließen.

Du willst noch weitere Infos zum Newsletter? Jetzt mehr erfahren

Anzeige
Anzeige
4 Kommentare
Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Daniel

sudeo node app.js ist böse => sudo node app.js ist böse

Antworten
xomz

Tippfehler im Artikel: Es sollte sudo statt sudeo heißen :)

Antworten
Mario Janschitz

@Daniel @xomz Danke für den Hinweis :)

Antworten
phaziz

Fehlerteufel: Mit dem Flag ‚use strict‘; könnt ihr !!! unischtbare!!! Fehler sichtbar machen …

Antworten

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!
Hallo und herzlich willkommen bei t3n!

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team von mehr als 75 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Schon jetzt und im Namen der gesamten t3n-Crew: vielen Dank für deine Unterstützung! 🙌

Deine t3n-Crew

Anleitung zur Deaktivierung
Artikel merken

Bitte melde dich an, um diesen Artikel in deiner persönlichen Merkliste auf t3n zu speichern.

Jetzt registrieren und merken

Du hast schon einen t3n-Account? Hier anmelden

oder
Auf Mastodon teilen

Gib die URL deiner Mastodon-Instanz ein, um den Artikel zu teilen.

Anzeige
Anzeige