Moin Moin!
Angaben wie
<img src="http://evil.example.com/bild.jpg>
sind demnach harmlos?Nein! Woher weißt Du, das sich hinter der Ressource http://evil.example.com/bild.jpg eine statische JPG-Datei steckt?
Es könnte eben so gut ein Script dahinterstecken.
Und nicht einmal das ist nötig.
Ich schicke John Doe eine Kündigung per Mail, die <img src="http://evillogger.example.com/john-doe-kuendigung-gelesen.gif" alt=""> enthält.
Dann lasse ich (ACHTUNG, BRUTE FORCE) regelmäßig folgendes Kommando laufen:
grep john-doe-kuendigung-gelesen.gif /server/www/logs/access.log
Irgendwann wird eine Zeile wie
192.168.168.192 - - [04/Jul/2008:20:13:01 +0200] "GET /john-doe-kuendigung-gelesen.gif HTTP/1.1" 200 611
herausfallen. Voila, Lesedatum und IP-Adresse. Mit erweitertem Logging auch noch der User Agent.
Ich müßte mir noch nicht einmal die Mühe machen, ein Bild hochzuladen, mod_rewrite oder ein error-handler könnten auf ein anderes Bild verweisen. Oder ich lasse es komplett weg und bekomme statt der 200 ein 404, die ich im (meist kleineren) error-log auch noch schneller finden kann.
Das im Mail-Client vielleicht ein "Broken Image"-Icon auftaucht, ist mir in dem Moment völlig egal, denn die Lesebestätigung habe ich in dem Moment schon.
Und genau deshalb sollte kein brauchbarer E-Mail-Client irgendwelche Resourcen von externen Systemen laden, jedenfalls nicht ohne vorher zu fragen.
Alexander
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".