Akzeptieren von Bilddateien per E-Mail von einer beliebigen Adresse.

8

Ich versuche, einen Dienst zu erstellen, bei dem jeder eine Bilddatei von einer E-Mail-Adresse / einem Client senden und verarbeiten kann. Denken Sie an den Service ein wenig wie Flickr , der das Bild in einem Dashboard anzeigt, das per E-Mail gesendet wird

Aus Usability-Sicht bietet diese Mechanik große Vorteile, aber ich möchte die Sicherheitsfolgen einer solchen Aktion verstehen . Einige Bedenken sind:

  • Ich muss alle diese Dateien als Bilder validieren
  • Leute können wahrscheinlich eine Datei mit einem Exploit / Code senden, der wahrscheinlich ist ein Problem sein. Aber in meinem Fall werde ich meistens eine Datei öffnen und Speichern Sie und lassen Sie den Browser das Bild anzeigen

Gehe ich hier richtig? Gibt es ernsthafte Konsequenzen, von denen ich sein sollte?

    
Quintin Par 06.03.2013, 23:23
quelle

3 Antworten

7

Dinge, die Sie tun und in Betracht ziehen sollten.

  1. Stellen Sie sicher, dass Ihr Mail-Server für die Virensuche konfiguriert ist und halten Sie ihn auf dem neuesten Stand. Das wird die erste Verteidigungslinie sein.

  2. Wenn die E-Mail ankommt, versuchen Sie, das Bild in einer bekannten Rock-Solid-Bibliothek zu verarbeiten.

  3. Beachten Sie, dass viele E-Mails mehrere Bilder enthalten, von denen einige gar nichts mit dem zu tun haben, was sie senden. Zum Beispiel enthalten unsere Firmen-E-Mails alle unser Logo am unteren Rand. Ich bin nicht genau sicher, was die Lösung hier ist, aber Sie sollten es in Betracht ziehen.

  4. Verschiedene E-Mail-Clients verarbeiten Bildanhänge, gut, anders. Manchmal ist es wie eine normale Befestigung, manchmal ist es in den Körper eingebettet. Sogar innerhalb desselben Clients kann ein Bild anders gehandhabt werden, abhängig davon, ob sie die E-Mail als Anlagetext mit Anhängen oder HTML-Mail gesendet haben.

  5. Leute werden dein System testen. Sie werden .js-Dateien senden, sie werden Bilder senden, deren Header aufgebockt sind, um Ihre Bildverarbeitungsbibliothek zu überlaufen ...

  6. Erwägen Sie die Durchsetzung bestimmter E-Mail-Beschränkungen wie SPF-Prüfungen .

  7. Seien Sie darauf vorbereitet, Bilder zu erhalten, die absolut riesig sind. Heutige Kameras machen sehr große Fotos und viele Leute wissen nicht, was man mit "crop" oder "resize" meint. Sie können in Erwägung ziehen, eine Obergrenze von 15 MB oder mehr pro E-Mail festzulegen, die auf Ihren Server kommt. Dann, in Kombination mit # 2 oben, automatische Größenanpassung der Bilder auf etwas akzeptabler.

  8. Bestimmen Sie den Mechanismus, den Sie verwenden möchten, um den Benutzer über Probleme zu informieren. Bedenken Sie, dass dieser Mechanismus missbraucht wird. Betrachten Sie zum Beispiel eine Spam-Nachricht, die an Ihren Computer gesendet wird, wobei Header mit Antworten an ein Opfer gesendet werden.

Wenn Sie .net verwenden, können Sie hier nachsehen, ob eine Datei ein Bild ist: Wie kann ich feststellen, ob eine Datei eine Bilddatei in .NET ist?

    
NotMe 13.03.2013, 21:47
quelle
6

Ich sage nicht, dass dies 100% sicher ist (können Sie jemals 100% sicher sein?), aber hier ist etwas, das Sie ausprobieren können:

Nehmen wir an, Sie haben einen Alias ​​auf Ihrem Postfix (oder einem anderen Mail-System), der eingehende E-Mails zur weiteren Verarbeitung an ein php / bash / python-Skript weiterleitet.

Als erstes würde ich eine Bildmanipulations-Bibliothek (zB imagemagick) verwenden und alle eingehenden Dateien in ein .png-Format oder was auch immer konvertieren und nur dann mit Ihrer Logik fortfahren, wenn die Konvertierung erfolgreich ist.

Auf diese Weise wird die Konvertierung fehlschlagen, wenn jemand Ihnen schädliche Attachments schickt (php exploit, jars, swfs, irgendetwas) und daher von Ihrem System ignoriert wird.

Edit: ImageMagick hat den Befehl "identify", der genau das tut, was Sie wollen.

    
Iraklis 07.03.2013 09:15
quelle
3

E-Mails können auch leicht spoofed sein, was bedeutet, dass ich eine E-Mail von einer E-Mail-Adresse senden kann, die mir nicht gehört.

Dies könnte auch helfen: Sicherer Weg um Bild in PHP hochzuladen ...

    
Mahdi 07.03.2013 12:44
quelle

Tags und Links