Version 3.2.00 behebt mehrere kritische Cross Site Scripting (XSS) Sicherheitslücken. Durch Ausnutzung dieser Lücken könnten registrierte Nutzer des Befragungsservers auf Benutzereinstellungen und Inhalte anderer Nutzer zugreifen, wenn sie die anderen Nutzer dazu bewegen können, einen präparierten Fragebogen zu öffnen. Die Sicherheitslücken betreffen alle früherne Versionen von SoSci Survey.
Die Programmversion 3.2.00 erfordert wie die Vorgängerversion 3.1.04 mindestens PHP 5.5 (wir empfehlen die aktuell neueste PHP-Version 7.3) und MySQL 5.5.3.
Behebung von Sicherheitslücken
- Eine Sicherheitsfunktion verhindert nun spezifische Cross Site Scripting (XSS) Angriffe durch Nutzer des Servers auf andere Benutzerkonten.
- Die Gültigkeit von Login-Cookies wird auf das Administrations-Verzeichnis eingeschränkt.
- Die Administrationsoberfläche (/admin/) verhindert ein Laden in Frames und iFrames.
- Behebung einer kritischen Sicherheitslücke, welche in Ergebnisberichten (Beta-Funktion) den Zugriff auf geschützte Mediendateien und hochgeladene Bilder erlaubte.
Veränderungen im Programmverhalten
- Im Datensatz wird bei Fällen aus der Fragebogenentwicklung nicht mehr zwischen "admin" und "debug" unterschieden.
- Die Funktion statistic() zählt das laufende Interview grundsätzlich nicht mehr mit, bisher wurde es nach zwei Seitenwechseln in die Statistik aufgenommen.
- Eventuell mittels goToParent() übermittelte Daten sind nur noch auf der unmittelbar folgenden Seite mittels goToResponse() verfügbar.
- Neue Befragungsprojekte sind standardmäßig so konfiguriert, dass auch abgebrochene Datensätze heruntergeladen werden.
- Die "Offene Texteingabe" wurde in "Texteingabe offen" umbenannten.
- Die generelle Aktivierung eines Pretests in den Projekt-Einstellungen mit dauerhaftem Passwort wurde endgültig entfernt, bisher war sie lediglich ausgeblendet, blieb für Alt-Projekte aber noch aktiv.
- Nach dem Update werden alle eingeloggten Nutzer ausgeloggt.
- Die Installation verwendet ein neues Verzeichnis /lib, für welches der gleiche Zugriffsschutz (kein Zugriff von außen) wie für /inc konfiguriert werden sollte.
Kleine Nützlichkeiten
- Die Funktion "Daten importieren" erlaubt es nun, Daten aus einer CSV-Datei in den Datensatz eines Befragungsprojekts zu importieren.
- Für einen Fragebogen können nun globale Funktionen definiert werden.
- Eingabefelder einer offenen Texteingabe können nun versteckt werden, indem als Breite eine Tilde (~) eingetragen wird. So können in einer entsprechenden Frage andere Eingabefelder (z.B. ein Dropdown) platziert werden.
- Offene Texteingaben unterstützen nun die Eingabe eines Datums mittels Kalender.
- Bei Items können die Einstellungen für ein Texteingabefeld und dessen Zeichenbeschränkungen nun optional auf alle Items einer Frage angewandt werden.
- Die voll beschriftete Skala bietet nun den Darstellungsmodus "dynamisch" für eine responsive Darstellung.
- In Skalen mit beschrifteten Zwischenwerten können die Skalenbeschriftungen nun über den "Direkimport" einfacher kopiert werden.
- In Fragebögen mit Textrichtung rechts-nach-links werden Schieberegler nun automatisch gedreht.
- Bild Bild-Skala erzeugt nun JavaScript-Events (click/change) und erlaubt damit eine bessere Verwendung auf dynamischen Fragebogen-Seiten.
- Die Bild-Skala unterstützt nun ein automatisches "Weiter" nach Beantworten aller Items.
- Die Opt-In-Frage kann nun auch ohne E-Mail-Adresse nur mittels Mobilnummer verwendet werden.
- Bei einer Opt-In-Frage kann nun die Einwilligung des Befragten abgefragt und als Voraussetzung für die Aufnahme der E-Mailadresse in die Adressliste dienen.
- In der Opt-In-Frage können die Vorwahl für eine Mobiltelefonnummer nun als Hinweis im Eingabefeld vorgegeben und die zur Auswahl stehenden akademischen Titel angepasst werden.
- Die Fragetypen "Datei hochladen" und "Datei-Inhalte übermitteln" erlauben nun Platzhalter im Präfix.
- Für den Fragetyp "Datei-Inhalte übertragen" steht eine neue Vorlage "Einfache Zeichenfläche" zur Verfügung.
- Die neue Vorlage "Foto von Webcam oder Smartphone" für den Fragetyp "Datei-Inhalte übertragen" erlaubt die Aufnahme von Fotos während des Interviews.
- Adresseinträge, die zur Fehlersuche (Debugging) angelegt wurden, erhalten nun auch außerhalb des regulären Befragungszeitraums Zugriff auf den Fragebogen.
- Die Opt-In-Funktion erzeugt im Debug-Modus nun Debug-Adresseinträge, mit denen auch außerhalb des Befragungszeitraums auf einen Folgefragebogen zugegriffen werden kann.
- Der Status von Seriennummern kann nun über die API zur Verwaltung der Adressliste abgefragt werden.
- Beim Versand von E-Mails mittels SMTP sind nun weitere Debug-Informationen verfügbar.
- Beim Versand einer Serienmail zeigt SoSci Survey nun eine Warnung, falls ein SPF-Record potenziell für Probleme sorgt.
- Für automatisierte E-Mails (z.B. "E-Mail an persönlichen Kontakt") kann in den Projekt-Einstellungen nun eine generische Absenderadresse ausgewählt werden.
- Verbesserte Darstellung des Audio-Players für den Fall, dass der Browser ein Autoplay unterbindet.
- Die Funktion randomUse() erlaubt es, die für eine Zufallsziehung effektiv genutzten Codes manuell festzulegen.
- Die Funktion finishCase() erlaubt es, ein Interview vorzeitig mit einer alternative Verabschiedung zu beenden und das Interview als abgeschlossen zu markieren.
- Die Funktion loopIndex() liefert nun auch für setPageOrder() einen fortlaufenden Wert.
- Die PHP-Funktion put() erlaubt über einen dritten Parameter das Setzen/Ändern einer nicht-internen Variable.
- Die Funktion panelUpdate() erlaubt es, den zum Interview gehörigen Adresseintrag zu aktualisieren.
- Die Funktion panelData() liefert bei personenbezogenen Adresseinträgen nun auch Name und E-Mail-Adresse.
- Mittels panelData() kann nun die Notiz zur Seriennummer abgerufen werden, wenn der Fragebogen die Zugriffsbeschränkung "Seriennummer" verwendet.
- Die Funktion mailSchedule() unterstützt nun einen vierten Parameter zum Festlegen, dass eine Erinnerungsmail nur an säumige Teilnehmer verschickt werden soll.
- Die Gültigkeitsdauer von Fragebogen-Links kann beim Versand mittels mailSchedule() nun individuell beschränkt werden.
- Die Funktionen loopPage() und loopToPage() können nun auch mit leeren Seiten bzw. goToPage('next') korrekt umgehen.
- Beim "Fragebogen zusammenstellen" erlauben PHP- und HTML-Elemente nun einen Tabulator und blockieren Änderungen, wenn der Fragebogen im Feld ist.
- In der Druckansicht des Fragebogens können Filter nun ein- und ausgeblendet werden.
- Im Fragebogen kann nun festgelegt werden, ob die Zeit zwischen zwei Fragebogen-Zeiten auch dann als Verweildauer gezählt werden soll, wenn der Fragebogen zwischenzeitlich unterbrochen wurde (z.B. durch eine Unterbrecherseite).
- Eine neue JavaScript-Funktion SoSciTools.recordTime() erlaubt eine genauere Aufzeichnung der Bearbeitungszeit pro Fragebogen-Seite.
- Zwei neue Platzhalter %pageNumber.abs% und %pageNumber.rel% geben im Fragebogen die Seitennummer aus.
- In der Online-Ansicht der erhobenen Daten kann nun nach Seriennummer (SERIAL) und offenen Texteingaben gefiltert werden.
- Die erhobenen Daten lassen sich nun mittels Script nach Stata importieren.
- Der Datenexport via API unterstützt nun neben dem CSV für R auch CSV für Excel.
- Beim Datenexport via API können im JSON-Format nun auch Informationen zu Variablen und Antwortcodes abgerufen werden.
- Der Speicherplatz-Verbrauch in Befragungsprojekten differenziert nun zwischen regulärer und geschützter Dateiablage und hochgeladenen Dateien.
- Im Benutzerkonto können nun Log-Einträge zu den Befragungsprojekten abgerufen werden, welche unter anderem die Löschung von Daten protokollieren.
- Abruf der Verwaltungsinformationen eines Projekts (Logfile) durch den Server-Administrator.
- Für jedes Befragungsprojekt kann in den Projekt-Einstellungen nun eine individuelle Zeitzone festgelegt werden, welche unter anderem die Variable STARTED und die Funktnio strtotime() steuert.
- Beim Anlegen neuer Befragungsprojekte kann nun direkt eine XML-Datei importiert werden, falls auf dem Server Vorlagen für Befragungsprojekte vorliegen.
- Die Darstellung der Projektverwaltung auf kleinen Bildschirmen wurde optimiert.
- Bei der Registrierung wird nun die Stärke des Passworts angezeigt.
Behebung unkritischer Programmfehler
- Es wird keine doppelte/zusätzlich Fehlermeldung über fehlende Antworten angezeigt, falls in einer Mehrfachauswahl zu wenig Optionen ausgewählt werden oder wenn in einer Texteingabe das vorgegeben Format nicht eingehalten wird.
- Der Fortschrittsbalken zeigt den Interview-Fortschritt auch dann korrekt an, wenn ein existierendes Interview aufgrund fehlender Antworten erneut von vorne begonnen wurde.
- Wenn im Fragebogen eingestellt ist, dass ein Interview beim erneuten Aufruft fortgesetzt werden soll, so erfolgt dies nun auch wenn bis dahin keinerlei Frgen gestellt wurden (MISSING nicht bekannt).
- Im Projekt-Modus ohne Zugriff auf übergeordnete Verzeichnisse werden nun auch als Bibliothek hinterlegte JavaScript-Dateien korrekt eingebunden.
- In der Druckansicht eines einzelnen Fragebogens werden Textfelder nun bei Bedarf größer dargestellt, um den vollständigen Text anzuzeigen.
- Die Filterung von Texteingabe-Formaten (Zahl/Dezimalzahl) funktioniert nun auch auf Android-Geräten korrekt.
- In Skalen (nur Extrema) skaliert eine visuelle Verankerung nun korrekt mit der Seitenbreite.
- Die Bildskala erlaubt wieder das Abwählen einer zuvor ausgewählten Antwortoption/Bewertung.
- Die Beschriftung über Schiebereglern wird nun auch bei Textrichtung rechts-nach-links korrekt angezeigt.
- Korrekte vertikale Abstände bei Auswahlfragen in Kärtchendarstellung "zeilenweise".
- Die Inhalte in einem Zufallsgenerator können nun auch mit Sonderzeichen (z.B. Minus) beginnen.
- Die Texteingabe mit Auswahlempfehlung zeigt nun auch dann (weitere) Auswahlempfehlungen, wenn die Eingabe bereits mit einer der möglichen Optionen übereinstimmt.
- Die Rangfolge-Frage fuktioniert im Internet Explorer 11 wieder korrekt, das PlugIn Velocity wird im Internet Explorer nun deaktiviert.
- Die Frage "E-Mail an persönlichen Kontakt" warnt nicht mehr, dass die E-Mail-Adresse ungültig sei, wenn keine E-Mail-Adresse angegeben wird.
- Bei der Texteingabe mit Auswahlempfehlung sorgen Auswahloptionen mit den Ziffern 2 und 8 im Text bei der Eingabe nicht mehr für unbeabsichtiges Springen im Dropdown.
- Bei Auswahlfragen, welche die Auswahloptionen in mehreren Spalten darstellen, funktionen die Einstellungen alle/keine Items zu schattieren nun korrekt.
- Die Vorgabe einer maximalen Höhe für Bilder in einer Zuordnungsaufgabe wird im Fragebogen wieder korrekt angewendet.
- Die grafische Positionierung erlaubt nun auf Mobilgeräten das Zoomen ohne dass dabei Markierungen entfernt werden.
- Der Fragetyp "Grafische Positionierung" bietet auf Mobilgeräten nun eine deutlich bessere Bedienbarkeit.
- Der Fragetyp "Grafische Positionierung" wird nun auch bei Textrichtung rechts-nach-links korrekt angezeigt.
- Interne Variablen funktionieren beim "Zurück" auch dann korrekt, wenn sie Daten mit Anführungszeichen enthalten.
- Der Fragetyp "Datei hochladen" zeigt eine bereits hochgeladene Datei nun auch, wenn das Eingabefeld mittels Platzhalter platziert wurde und behält den Antwortcode 2 auch, wenn die Frage nach einem Upload erneut angezeigt und keine neue Datei ausgewählt wird.
- Die Zuordnungsaufgabe erkennt Tastendrücke nun auch dann korrekt, wenn für die den Vorab-Text und die Items dieselben Tasten eingestellt wurden.
- Die Texte des IAT (Impliziter Assoziationstest) erscheinen in mehrsprachigen Projekten nun zur Übersetzung im Übersetzungsassistenten.
- Die Funktion debug() erzeugt im Debug-Modus wieder eine Information (gelb), keinen Fehler (rot).
- Die Funktionen loopToPage() und loopIndex() funktionieren nun auch dann korrekt, wenn innerhalb der Schleife zwei oder mehr aufeinanderfolgende Seiten aufgrund eines Filter übersprungen werden.
- Textelemente werden nun auch bei Verwendung mit repeatPage() mit korrekten Abständen angezeigt.
- Die Funktionen goToQuestionnaire() und multiLevelDown() springen beim Neu-Laden einer Seite nicht mehr weiter zu späteren Seiten.
- Performance-Probleme bei der Verwendung der Funktion caseData() wurden behoben.
- Die Residualoptionen von Mehrfachauswahlfragen reagieren nun korrekt auf preset().
- Die Funktion loopToPage() verarbeitet Sprünge mittels goToPage() innerhalb der Wiederholung wieder korrekt.
- Beim Löschen der erhobenen Daten bleiben benutzerdefinierte Variablen-Labels erhalten.
- Auch große CSV-Dateien können nun in die "Datenbank für Inhalte" importiert werden.
- Korrekte Anzeige der geplanten Archivierung von Projekten auf verbundenen Servern.
- Die Funktion "Datenbank für Inhalte" unterstützt nun auch Inhalte mit Zeilenumbruch.
- Der Direkt-Import von Items in einer Frage erlaubt nicht mehr das Löschen verwendeter Variablen während des Erhebungszeitraums.
- Ein Performance-Problem wurde behoben, welches den Server bei (nach) dem Versand von SMS ausbremsen konnte.
- In Serienmails kann die Beschriftung des HTML-Links zum Fragebogen nun auch mehrsprachig hinterlegt werden.
- Bei der Umwandlung von Text in HTML-Code werden Aufzählungen mit nur einem Aufzählungspunkt nicht mehr gelöscht.
Änderungen unter der Haube
- Die in der Datenbank hinterlegten Aktivitäten verwenden nun Unix-Zeitstempel, um Problemen mit unterschiedlichen Zeitzonen zu begegnen.
- Auswahlfragen stellen nun unabhängig von den Einstellungen der Frage ein JavaScript-Objekt zur Frage bereit.
- Änderung der benutzerdefinierten Auswahlfelder mit dem Ziel, dass diese zusammen mit Auswahlbereichen (Kärtchen-Darstellung) in dynamischen Skalen funktionieren.
- Aktualisierung des PlugIns HTMLPurifier auf Version 4.10.
- Umstellung der Opt-In-Activities von CSV auf JSON.
Modul: Datenauswertung/Ergebnisberichte
- Die Häufigkeits-Charts bei offenen Antworten werden nun wieder korrekt angezeigt.
- Offene Antworten mit kleinen Schreibfehlern werden nun zusammengefasst.
- In Häufigkeitstabellen können Werte nun mittels Drag&Drop zusammengefasst werden.
- Überarbeitete Ausgabe für Mehrfachauswahl-Fragen.
Modul: Automatisierter Datenexport
- Der MySQL-Export unterstützt nun auch Dezimalzahlen mit Komma als Dezimaltrenner und verwendet die für den automatisierten Export definierten Auswahlkriterien.