Tutorial: Dateifilterung & Virenscan mit Transloadit
Da immer mehr Lebensbereiche auf digitale Plattformen verlagert werden, wird sorgfältig abgewogen, wie viele GB an Daten man buchen sollte. Zugleich steigen die Anforderungen, denn Ihre Nutzer – und deren Daten – zu schützen, ist wichtiger denn je.
Ob wir native Apps, APIs oder Webanwendungen entwickeln: Als Entwickler ist es unsere Verantwortung, viel Überlegung und Zeit darin zu investieren, unsere Nutzer vor Personen mit böswilligen Absichten zu schützen. Gleichzeitig müssen wir sicherstellen, dass der Speicherplatz optimal genutzt wird, damit insgesamt mehr freier Speicher zur Verfügung steht.
Transloadit erleichtert Entwicklern die Kontrolle über den Speicherplatz, der beim Encoding von Dateien verwendet wird, und bietet mithilfe der Robots /file/filter bzw. /file/virusscan zuverlässige Methoden zum Herausfiltern von Viren.

Der /file/filter-Robot
Der Robot /file/filter ermöglicht es Ihnen, Dateien abzulehnen oder an verschiedene Steps zum Encoding umzuleiten. Beispielsweise können wir diesen Robot anweisen, Dateien abzulehnen, die auf eine bestimmte Weise codiert sind, oder Dateien, die kleiner / größer als eine bestimmte Größe sind.
Er arbeitet im Wesentlichen anhand der Parameter accepts und declines, die jeweils auf ein
Array mit drei Elementen gesetzt werden können:
- Ein Wert oder eine Job-Variable, etwa
${file.mime},${file.size} - Einer der folgenden Operatoren:
=, <, >, <=, >=, !=, regex, !regex - Ein Wert oder eine Job-Variable, etwa 50 oder „foo“
Sehen wir uns das folgende Beispiel an, das Dateien ablehnt, die größer als 20 MB sind:
{
"steps": {
":original": {
"robot": "/upload/handle"
},
"files_filtered": {
"use": [":original"],
"robot": "/file/filter",
"result": true,
"declines": [["${file.size}", ">", "20971520"]],
"error_on_decline": true
}
}
}
Der /file/virusscan-Robot
Der Robot /file/virusscan schützt Sie und Ihre Nutzer, indem er Millionen potenzieller Trojaner, Viren, Malware oder anderer schädlicher Bedrohungen ablehnt, bevor sie Ihre Plattform erreichen.
Dieser Robot basiert auf ClamAV, der besten verfügbaren Open-Source-Antiviren-Engine. Wir aktualisieren ihre Signaturen täglich.
Das folgende Beispiel zeigt die grundlegende Verwendung für diesen Robot:
{
"steps": {
":original": {
"robot": "/upload/handle"
},
"virus_scanned": {
"use": [":original"],
"robot": "/file/virusscan",
"result": true,
"error_on_decline": true
}
}
}
Die Assembly erstellen
Wir möchten eine Assembly erstellen, die beide Robots miteinander kombiniert, damit alle Datei-Uploads unseren gewünschten Dateiprüfungen und Virenscans entsprechen.
Zunächst müssen wir hier eine Testvirusdatei herunterladen.
Die Testvirusdateien unter dem obigen Link richten auf Ihrem Computer keinen Schaden an. Sie enthalten lediglich eine spezielle Signatur der EICAR-Organisation (European Expert Group for IT Security), die speziell dafür entwickelt wurde, das funktionale Verhalten von Antivirensoftware zu testen.
Dies sind die Assembly Instructions, mit denen wir diese Virusdatei testen:
{
"steps": {
":original": {
"robot": "/upload/handle"
},
"files_filtered": {
"use": [":original"],
"robot": "/file/filter",
"result": true,
"declines": [["${file.size}", ">", "1024"]],
"error_on_decline": true
},
"virus_scanned": {
"use": [":original"],
"robot": "/file/virusscan",
"result": true,
"error_on_decline": true
}
}
}
Im ersten Step lädt der Robot /upload/handle eine Datei zu Transloadit hoch.
Im nächsten Step filtert der Robot /file/filter alle Dateien heraus, die größer als 1 KiB (1.024 Bytes) sind.
Im letzten Step lehnt der Robot /file/virusscan jede Datei ab, die einen Virus enthält.
Um unser neu erstelltes Template auszuprobieren, müssen wir lediglich den folgenden Node.js-Code ausführen und dabei den Pfad zu einer lokalen Testdatei als Argument übergeben. Probieren Sie es gern selbst aus!
const { Transloadit } = require('transloadit')
const transloadit = new Transloadit({
authKey: process.env.TRANSLOADIT_AUTH_KEY,
authSecret: process.env.TRANSLOADIT_SECRET_KEY,
})
const options = {
files: { file: process.argv[2] },
params: {
steps: {
':original': {
robot: '/upload/handle',
},
files_filtered: {
use: [':original'],
robot: '/file/filter',
result: true,
declines: [['${file.size}', '>', '1024']],
error_on_decline: true,
},
virus_scanned: {
use: [':original'],
robot: '/file/virusscan',
result: true,
error_on_decline: true,
},
},
},
}
transloadit.createAssembly(options)
.then((result) => console.log({ result }))
.catch(console.error)
Die Ergebnisse
Unsere Assembly scheint einwandfrei zu funktionieren! Nachdem wir den obigen Node.js-Code mit zwei Dateien ausgeführt haben (der Virusdatei und einer anderen Datei mit einer Größe von 2,9 MB), zeigt uns das Dashboard in beiden Fällen, dass es Fehler bei beiden Dateien gab.


Ich hoffe, es hat Ihnen Freude gemacht, ein wenig mehr darüber zu erfahren, wie Sie die Robots /file/filter und /file/virusscan kombinieren können, um die Nutzung von Speicherplatz besser zu überwachen und infizierte Dateien zuverlässig abzuwehren.
