Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

Email mit embedded images; img src="data:image..." wird gelöscht

  • philosophtware
  • philosophtware's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
2 weeks 5 days ago #269671 by philosophtware
Bitte helfen Sie uns, Ihnen zu helfen und füllen Sie folgende Felder aus:
Ihre LimeSurvey-Version:  LimeSurvey Cloud Version 6.11.0
Eigener Server oder LimeSurvey-Cloud: Cloud
Genutzte Designvorlage: Bootswatch
==================
Hallo,

wir haben in der Kundenorganisation die Anforderung, Bilder nicht als externe Referenz in den Einladungsemails zu verwenden, sondern direkt im Email zu embedden. In unserer Version voriges Jahr hat funktioniert (da auch mit mehreren Versuchen über uploads /resources etc.kein Erfolg), die Bilder als Base64 encoded direkt in das src-Attribute der Bilder in Vorlage hineinzunehmen d.h.

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQ0A........"> etc.

Aktuell ist es aber so, dass seit dem Update auf die gegenwärtige Version, das src-Tag mit base64 encoded einfach herausgeschmissen wird, wie ich vermute, durch den HTML Sanitizer. Es wird zwar direkt nach dem Einfügen im Quellcode noch angezeigt d.h. auch das Bild ist sichtbar, aber unmittelbar nach dem Speichern ist es weg. Ich habe keine Einstellung gefunden, das zu unterbinden (XSS HTML etc.)

Alternative kreative Überlistungs-Versuche, wie z.B. <img style="background-image:url('data:image/png;base64,iVBORw0KGgoA......"> oder auch die ausgelagerte Variante mit einem<style type="text/css">-Element und entsprechender class auf dem img, sind nur halb erfolgreich. Es wird korrekt im Editor angezeigt, bleibt beim Speichern erhalten, aber der einzige Email-Client, der es bisher richtig darstellt, ist Thunderbird, während Outlook, Gmail etc. das Bild verschlucken. 

Die meiner Meinung nach korrekte Vorgehensweise wäre ohnehin, es als cid: ins Mail zu hängen d.h. PHP-Mailer entsprechend zu konfigurieren. Das ist aber in der Cloud Variante keine Option (von der ich weiß).

Hat jemand eine Idee? 

Danke
Martin

Please Log in to join the conversation.

  • holch
  • holch's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 weeks 5 days ago #269674 by holch
Habt ihr den XSS Filter an? Was passiert, wenn er aus ist?

Help us to help you!
  • Provide your LS version and where it is installed (own server, uni/employer, SaaS hosting, etc.).
  • Always provide a LSS file (not LSQ or LSG).
Note: I answer at this forum in my spare time, I'm not a LimeSurvey GmbH employee.

Please Log in to join the conversation.

  • philosophtware
  • philosophtware's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
2 weeks 5 days ago #269675 by philosophtware
Hallo,

danke, das habe ich bereits versucht, jetzt nochmals, leider keine Veränderung.

Wir bereiten jetzt einmal eine lokale Installation von Lime in der gleichen Version vor, sodass wir schauen können, wo im Code die Entfernung genau passiert und ob irgendwelche Parameter darauf Einfluss haben.

Please Log in to join the conversation.

  • holch
  • holch's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 weeks 5 days ago #269676 by holch
Mal probiert den WYSIWYG-Editor auszuschalten und zu schauen ob es erhalten bleibt? Denn wenn es nicht am XSS-Filter liegt, kann ich mir eigentlich nur noch vorstellen, dass der HTML-Editor da irgendwie quer schiesst.

Help us to help you!
  • Provide your LS version and where it is installed (own server, uni/employer, SaaS hosting, etc.).
  • Always provide a LSS file (not LSQ or LSG).
Note: I answer at this forum in my spare time, I'm not a LimeSurvey GmbH employee.

Please Log in to join the conversation.

  • philosophtware
  • philosophtware's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
2 weeks 5 days ago #269677 by philosophtware
Hmmm, wie genau ausschalten?

Ich editiere im Editor ausschließlich per Source/Quellcode HTML. Nach OK ist es im Editor auch richtig sichtbar und bei erneutem Öffnen der Quelle auch. Speichern-> futsch.

Ich bin leider noch nicht zur Installation der Offline-Version gekommen. Ich denke aber es ist eine Form von nachträglicher Prüfung bzw. Bereinigung.

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 weeks 5 days ago #269678 by Joffm
Hallo,
das klingt so, als würdest Du doch noch im WYSIWYG Editor arbeiten (wegen OK).
Er verhält sich wirklich manchmal etwas sonderbar.

Du schaltest zwischen den drei verfügbaren Editoren um in Deinem Konto (oben rechts, wo Dein Username steht).

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 weeks 4 days ago - 2 weeks 4 days ago #269680 by Joffm
Hallo,
ich habe es jetzt einmal ausprobiert.

Erstens: Der Editor macht keinen Unsinn.

Zweitens: Es funktioniert wie gewünscht.
Die Vorlage

Und die erhaltene Mail


Drittens: Der Feldtyp für diese Einladungsmail ist "mediumtext", also 16MB groß.
Das ist erst einmal sehr groß, aber sicher auch nötig, wenn man diese base64-Codierung benutzen will.
Da wird ja unendlich viel Platz "verbraten".

Ich könnte mir jetzt irgendwie vorstellen, dass bei Euch irgendwelche  Einstellungen sind, die diese Größe "nicht mögen".
Wie groß ist denn die gesamte Mail?

So gut, so schlecht:
Wenn wir es nicht reproduzieren können, ist es immer dchwierig, etwas Substantielles zu sagen.

Joffm
 

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 2 weeks 4 days ago by Joffm.

Please Log in to join the conversation.

  • philosophtware
  • philosophtware's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
2 weeks 3 days ago #269692 by philosophtware
Hallo Joffm,


0. Danke für die Idee mit dem Umschalten, ich habe auf reinen Quell-Editor umgestellt, leider ist das ebenfalls wirkungslos. Auch da ist es beim Speichern sofort weg.

1. Ich möchte es nochmals zum Verständnis explizit anführen: es geht nicht um das normale Verlinken von Images aus den Resources oder extern etc., sondern um das tatsächliche Einbettenh direkt über src="data:image/png;base64,......" d..h. keine src="http://" oder src="/pfad/". Die Größe ist kein Problem, das Bild ist 64KB groß.

Es kommt das heraus

<p><img align="left" height="142" hspace="12"  style="width:.7291in;height:1.4791in" width="70" /></p>

wenn es vorher so war, wie untenstehend

<p><img align="left" height="142" hspace="12" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQ0AAAIjCAYAAAAZXE7TAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAIdUAACHVAQSctJ0AAPzISURBVHhe7P13mCVXdbYP+4/vfQ1KI03W5OnpnMP05DwaTVJEEkokE02SwIAxYHI00WRMMiByEEGIIBOFRcaAsIlGGXB6MbbfHH717Xudfs6s3r1PPt3ndHf1dT1Xna6wq2rXXnetvXao37vzzjuz+aq777471xzonnvuye69995cC1A829QzL6ccGrkqKofGwlUOjVyzohwaC1eLAhp33XVXUakbylW/KECllCpwuea/Us9aSpURNK+gkYNi9kQhSRWqXItXqXKCcmjkMuXQyBUrVU7QvIBGXiVprrwL6pUqOLkWr1JlBLU9NHJQNFc89FQByZWrWrUUGnfccce03ynddRetJIBjpqZ7INUqbUytUer6ZkOnzlmAxuzLv5nKKVUoCyqdlt9WSvExJcW+Umq75PZLnQ8lj5vStP28ZuxXeMPPzI/2UUuh8ctf/rIIhjvu+EVp3ZlQtM+dd/...usw. usw. "/>"

2. Damit normale Resources eingebettet würden, müsste man meines Wissens den phpmailer umkonfigurieren d.h. cdi-Attachments etc.,  was ja in der Cloud nicht geht. Wenn das gehen sollte, sehr gerne, bin für jeden Hinweis dankbar.

3. Ich habe die ursprünglich auslösende Stelle für das Problem im lokalen SourceCode gefunden; die Quellcode-Kette ist
Code:
index.php -> EmailTemplates.php ->SurveyLanguageSetting.php -> LSActiveRecord.php -> CActiveRecord.php -> CModel.php -> (über createValidators()->rules() etc) -> LSYii_Validators.php -> $allowDataURI = false
d.h. in Version 6.11. und 6.12.
Wenn ich dort auf
Code:
public $allowDataUri = true;
setze, läuft es astrein durch. Leider hilft mir  das für die Cloud Lime Survey nichts, weil ich den Code dort nicht ändern kann.

4. Wie in diesem Code-Stück ersichtlich, ist die Prüfung auch unabhängig vom xss filter
Code:
//class LSYii_Validators.....
 
    protected function validateAttribute($object, $attribute)
    {
        if ($this->xssfilter) { //<------ XSS wird hier geprüft
            $object->$attribute = $this->xssFilter($object->$attribute);
            if ($this->isUrl) {
                if (self::isXssUrl($object->$attribute)) {
                    $object->$attribute = "";
                }
            }
        }
        // Note that URL checking only checks basic URL properties. As a URL can contain EM expression there needs to be a lot of freedom.
        if ($this->isUrl) {
            if ($object->$attribute == 'http://' || $object->$attribute == 'https://') {
                $object->$attribute = "";
            }
        }
        if ($this->isLanguage) {
            $object->$attribute = $this->languageFilter($object->$attribute);
        }
        if ($this->isLanguageMulti) {
            $object->$attribute = $this->multiLanguageFilter($object->$attribute);
        }
        if (!$this->allowDataUri) { //<----- HIER
            $object->$attribute = $this->dataUriFilter($object->$attribute);
        }

5. Mein  Problem besteht also weiterhin.

Grüße
Martin

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 weeks 3 days ago #269693 by Joffm
Hallo,

ja, das ist uns schon klar.
Wie ich es gestern bereits zeigte, ist dies wohl kein LimeSurvey-Problem.
Was ich nicht zeigte, ist der Quellcode der Mail-Vorlage - also genau das, was Du möchtest.
 
Aber da Du ja schriebst, dies würde nach Druck auf "Speichern" verschwinden, ist der phpMailer noch nicht im Spiel.

Ich würde zunächst einmal schauen, on der Code überhaupt in der Datenbank ist.
Tabelle "lime_surveys_languagesettings"
 

Falls nicht - was ich vermute - liegt wohl ein Problem der Speicherung vor.
Nicht ohne Grund frug ich nach der Größe dieser Mail-Vorlage. Mein kleines Beispiel-Bildchen ist ja fast nichts, ist aber mehr als 16kB groß.
Daher auch einmal in die phpinfo schauen.

Joffm

 

Volunteers are not paid.
Not because they are worthless, but because they are priceless

Please Log in to join the conversation.

  • philosophtware
  • philosophtware's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
2 weeks 3 days ago - 2 weeks 3 days ago #269694 by philosophtware
HA!

@Joffm: Ich hatte nun noch einen Einfall, wieso es bei dir gehen köntte. Ich arbeite mit den gespeicherten Email-Vorlagen und ändere diese beim Versand nicht. Wenn ich meinen Vorlagen-Code in den HTML-Code auf der Maske zum Versenden eingebe, dann funktioniert es!

Das ist natürlich von der Code-Basis aus meiner Sicht doch ein Fehler d.h. dass das Vorlagen-HTML anders geprüft wird als der Versenden-HTML-Code, der aus der Vorlage übernommen wird, aber es ist zumindest ein tauglicher, wenn auch umständlicher Workaround, dass ich den "echten" HTML-Code inkl. Bild beim Versand nochmals drüberkopieren muss.

Danke für den Denkanstoß, sonst hätte ich diese Variante gar nicht mehr probiert.
Martin
 
Last edit: 2 weeks 3 days ago by philosophtware.

Please Log in to join the conversation.

  • philosophtware
  • philosophtware's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
2 weeks 3 days ago #269695 by philosophtware
ja, aber der mediumtext ist 16MB, da ginge sich auch 16mb aus. wie gesagt, das Problem ist, es wird beim Speichern der Vorlage hart und nicht parmetrierbar ausgefiltert.

Workaround wie im vorigen Post d.h. beim Senden.

Please Log in to join the conversation.

  • philosophtware
  • philosophtware's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
2 weeks 3 days ago #269696 by philosophtware
Und ich wüßte nicht wie ich bei Lime Cloud auf die Datenbank kommen sollte, außer einen Dump herunterladen, was etwas mühsam ist.
Es ist ja eine bei limequery.org/limesurvey gehostete Installation.

Please Log in to join the conversation.

Moderators: holchJoffmtpartner

Lime-years ahead

Online-surveys for every purse and purpose