Zum Inhalt springen

Pompelmi-Befehle

Umfassende Pompelmi-Datei-Upload-Sicherheitsscan-Befehle für Node.js-Anwendungsschutz.

BefehlBeschreibung
npm install pompelmiPompelmi via npm installieren
yarn add pompelmiPompelmi via Yarn installieren
pnpm add pompelmiPompelmi via pnpm installieren
bun add pompelmiPompelmi via Bun installieren
const express = require('express');
const { createScanner } = require('pompelmi');

const app = express();
const scanner = createScanner({
  maxFileSize: '10mb',
  allowedExtensions: ['.pdf', '.png', '.jpg', '.docx'],
});

app.post('/upload', scanner.middleware(), (req, res) => {
  res.json({ files: req.files });
});
FrameworkBeschreibung
pompelmi/expressExpress.js-Middleware-Adapter
pompelmi/koaKoa-Middleware-Adapter
pompelmi/nextNext.js-API-Route-Adapter
pompelmi/nitroNuxt/Nitro-Adapter
pompelmi/fastifyFastify-Plugin-Adapter
OptionBeschreibung
maxFileSize: '10mb'Maximal zulässige Dateigröße
allowedExtensions: ['.pdf', '.png']Whitelist der zulässigen Dateierweiterungen
blockedExtensions: ['.exe', '.bat']Blacklist der blockierten Erweiterungen
allowedMimeTypes: ['image/png']Whitelist der zulässigen MIME-Typen
scanTimeout: 30000Scan-Timeout in Millisekunden
tempDir: '/tmp/pompelmi'Temporäres Verzeichnis zum Scannen
preserveOriginalName: trueUrsprünglichen Dateinamen behalten
OptionBeschreibung
yara: { enabled: true }YARA-Regelscanning aktivieren
yara: { rules: './rules/' }Pfad zum benutzerdefinierten YARA-Regelverzeichnis
yara: { builtinRules: true }Integrierte Malware-Erkennungsregeln verwenden
yara: { timeout: 10000 }YARA-Scan-Timeout
Benutzerdefinierte YARA-Regeldatei.yar Dateien für benutzerdefinierte Erkennungen schreiben
OptionBeschreibung
archive: { enabled: true }Archive-Inspektion aktivieren
archive: { maxDepth: 3 }Maximale Rekursionstiefe für verschachtelte Archive
archive: { maxFiles: 100 }Maximale Dateien im Archive
archive: { maxRatio: 100 }Max Kompressionsrate (Zip-Bomb-Schutz)
archive: { maxSize: '100mb' }Max extrahierte Gesamtgröße
archive: { formats: ['zip', 'tar', 'gz'] }Unterstützte Archive-Formate
RichtlinieBeschreibung
policy: 'strict'Alles verdächtig blockieren (empfohlen)
policy: 'moderate'Bekannte Malware blockieren, vor verdächtig warnen
policy: 'permissive'Nur bestätigte Malware blockieren
Benutzerdefinierte RichtlinienfunktionEigene Accept/Reject-Logik definieren
CheckBeschreibung
Extension-ValidierungDateierweiterung gegen Allowlist überprüfen
Magic-Byte-ErkennungDateityp nach Content-Bytes überprüfen
MIME-Typ-ÜberprüfungServerseitige MIME-Typ-Überprüfung
Doppel-Erweiterungs-Erkennungfile.pdf.exe Tricks erkennen
Null-Byte-ErkennungNull-Byte-Injektionen in Dateinamen blockieren
Content-Type-MismatchErweiterungs-/Content-Abweichungen erkennen
EventBeschreibung
scanner.on('scan:start', fn)Beim Scan-Start ausgelöst
scanner.on('scan:complete', fn)Beim Scan-Ende ausgelöst
scanner.on('scan:reject', fn)Wenn Datei abgelehnt wird ausgelöst
scanner.on('scan:accept', fn)Wenn Datei alle Checks passiert ausgelöst
scanner.on('scan:error', fn)Bei Scan-Fehler ausgelöst
scanner.on('yara:match', fn)Wenn YARA-Regel matched ausgelöst
PropertyBeschreibung
result.safeBoolean: Datei hat alle Checks bestanden
result.threatsArray der erkannten Bedrohungen
result.mimeTypeErkannter MIME-Typ
result.extensionDateierweiterung
result.sizeDateigröße in Bytes
result.hashSHA-256-Hash der Datei
result.scanTimeZeit zum Scannen (ms)
result.yaraMatchesYARA-Regel-Matches (falls aktiviert)
const { createScanner } = require('pompelmi');

const scanner = createScanner({
  maxFileSize: '5mb',
  allowedExtensions: ['.pdf', '.png', '.jpg'],
  yara: { enabled: true, builtinRules: true },
  archive: { enabled: true, maxDepth: 2 },
  policy: 'strict',
});

// Als Middleware
app.post('/upload', scanner.middleware(), handleUpload);

// Manuelles Scannen
app.post('/upload', async (req, res) => {
  const result = await scanner.scan(req.file.buffer, {
    filename: req.file.originalname,
  });

  if (!result.safe) {
    return res.status(400).json({
      error: 'File rejected',
      threats: result.threats,
    });
  }

  // Sichere Datei verarbeiten...
});
const { createScanner } = require('pompelmi/koa');

const scanner = createScanner({
  maxFileSize: '10mb',
  allowedMimeTypes: ['application/pdf', 'image/*'],
});

router.post('/upload', scanner.middleware(), async (ctx) => {
  ctx.body = { files: ctx.request.files };
});
import { createScanner } from 'pompelmi/next';

const scanner = createScanner({
  maxFileSize: '5mb',
  allowedExtensions: ['.pdf', '.png'],
});

export default scanner.handler(async (req, res) => {
  const files = req.files;
  res.json({ uploaded: files.length });
});
BefehlBeschreibung
npx pompelmi scan <file>Einzelne Datei scannen
npx pompelmi scan ./uploads/Verzeichnis von Dateien scannen
npx pompelmi scan --yara <file>Mit YARA-Regeln scannen
npx pompelmi scan --json <file>Ergebnisse als JSON ausgeben
npx pompelmi rules listVerfügbare YARA-Regeln auflisten
npx pompelmi rules updateIntegrierte YARA-Regeln aktualisieren
TippBeschreibung
Strikte Richtlinie in Produktion verwendenAlles verdächtige blockieren
YARA-Regeln aktivierenBekannte Malware-Signaturen erkennen
Archive-Limits setzenZip-Bombs und verschachtelte Payloads verhindern
MIME-Typen auf Server-Seite validierenNicht auf Client-Content-Type vertrauen
Doppel-Erweiterungen überprüfenfile.pdf.exe Muster blockieren
Angemessene Größenlimits setzenRessourcenerschöpfung verhindern
Im Speicher scannenVertraute Dateien nicht auf Disk schreiben
Scan-Events überwachenAblehnungen protokollieren und alarmieren
YARA-Regeln regelmäßig aktualisierenMit Threat-Intelligence aktuell bleiben
Allowlists über Blocklists verwendenWhitelist-Ansatz ist sicherer als Blacklist