Einführung
API-Sicherheit bedeutet, die Integrität der von uns verwendeten oder erstellten APIs zu schützen. Heutzutage nutzen die meisten Unternehmen APIs, um Dienste zu verbinden und Daten zu übertragen. Wird eine API kompromittiert, offengelegt oder gehackt, führt dies zu einem Datenleck. Daher müssen wir, abhängig von den übertragenen Informationen, den erforderlichen Sicherheitsstandard für die Anwendung festlegen. In diesem Artikel stelle ich einige nützliche npm-Pakete vor, die uns helfen, häufige Sicherheitsprobleme zu vermeiden.
1. Das Tragen eines Helms
Helmet.js Es handelt sich um ein Node.js-Modul zum Schutz von HTTP-Headern. Dieses Modul wird in Express-Anwendungen verwendet und verhindert Angriffe wie Cross-Site-Scripting (XSS) und Clickjacking durch das Setzen verschiedener HTTP-Header.
Warum ist der Schutz von HTTP-Headern wichtig?
Die meisten Entwickler ignorieren HTTP-Header. Diese Header können jedoch sensible Informationen über den Server, die Softwareversion und sogar die Struktur der Anwendung preisgeben. Deshalb ist die Verwendung von Tools wie Helmet.js so wichtig.
Wichtige Helmet.js-Module
- X-Frame-Options: Verhindern Sie Clickjacking, indem Sie verhindern, dass Seiten in iFrames angezeigt werden.
- Content-Security-Policy: Legen Sie eine Sicherheitsrichtlinie fest, um das Einschleusen nicht autorisierter Skripte zu verhindern.
- Cache-Control: Deaktivieren Sie das clientseitige Caching für sensible Informationen.
- Expect-CT: Gewährleistung der Transparenz von SSL-Zertifikaten.
- X-Powered-By: Entfernen Sie die Header, die Informationen zur Serversoftware anzeigen.
- X-XSS-Schutz: Aktivieren Sie den Schutz vor XSS-Angriffen in Browsern.
- Strenge Transportsicherheit: Den Browser zur Verwendung von HTTPS zwingen.
Um mit Helmet.js loszulegen, installieren Sie einfach dieses Modul und verwenden Sie es in Ihrer Express-Anwendung.
const helmet = require('helmet'); const express = require('express'); const app = express(); app.use(helmet());
2. Sichere Verwendung von Cookies
Um sicherzustellen, dass Cookies keine Sicherheitslücken in Anwendungen verursachen, sollten Sie den Standardnamen für Session-Cookies nicht mehr verwenden und die Cookie-Sicherheitsoptionen entsprechend anpassen.
Häufige Cookie-Probleme
Sind Cookies nicht korrekt konfiguriert, können sie leicht Ziel von Cross-Site-Scripting-Angriffen oder der Offenlegung von Informationen werden. Durch präzise Cookie-Einstellungen lassen sich diese Risiken minimieren.
Empfohlene Einstellungen
- sicher: Stellen Sie sicher, dass Cookies nur über HTTPS gesendet werden.
- httpOnly: Beschränkung des Zugriffs von Cookies auf clientseitiges JavaScript.
- Domain: Geben Sie eine gültige Domain für Cookies an.
- Weg: Beschränken Sie die Pfade, auf denen Cookies gültig sind.
- Ablaufdatum: Legen Sie ein Ablaufdatum für dauerhafte Cookies fest.
const session = require('cookie-session');
const express = require('express');
const app = express();
const expiryDate = new Date(Date.now() + 60 * 60 * 1000); // 1 ساعت
app.use(session({
name: 'session',
keys: ['key1', 'key2'],
cookie: {
secure: true,
httpOnly: true,
domain: 'example.com',
path: 'foo/bar',
expires: expiryDate
}
}));3. NoSQL-Injections verhindern
NoSQL-Injection ist eine häufige Angriffsmethode auf Anwendungen, die NoSQL-Datenbanken verwenden. Durch diesen Angriff kann ein Angreifer sensible Informationen extrahieren.
Lösung
Verwendung des Pakets express-mongo-sanitize Sie können eingehende Daten bereinigen und diese Art von Angriffen verhindern.
$ npm install express-mongo-sanitize
const mongoSanitize = require('express-mongo-sanitize');
app.use(mongoSanitize());4. ReDoS-Angriffe verhindern
ReDoS- oder Denial-of-Service-Angriffe mittels regulärer Ausdrücke können die Serverleistung beeinträchtigen. (Aus dem Tool) sicherer regulärer Ausdruck Verwenden Sie reguläre Ausdrücke, um zu prüfen, ob sie sicher sind.
Beispiel
var safe = require('safe-regex');
var regex = process.argv.slice(2).join(' ');
console.log(safe(regex));5. CSRF-Angriffe verhindern
Um Ihre Anwendung vor CSRF-Angriffen zu schützen, die es Angreifern ermöglichen, bösartige Anfragen über legitime Browser zu senden, verwenden Sie das Modul. csurf Verwenden.
const csrf = require('csurf');
app.use(csrf());









