WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

You are not logged in.

#1 24.06.2020 08:30:43

bbs2
Member

Nur einmal Daten absenden erlauben [mit PollsNew]

Hallo,

ich habe für eine Onlineabstimmung bzw. Umfragen in einem Verein mit mpform ein Abstimmungsformular
entwickelt. Die Mitglieder können durch entsprechende email-Einstellungen über eine private Seite  geheim abstimmen,
da nur die Server-email als Absenderadresse benutzt wird. Das Login erfolgt mit Klarnamen. Das Mitglied kann
ein persönliches Passwort wählen

Ist es möglich sicherzustellen, dass jedes Mitglied nur einmal das Abstimmungsformular
absenden kann?

Eine Änderung des BGB erlaubt solche Abstimmungen infolge Corona bis 31.12.2020 ohne Satzungsänderung.

Viele Grüße
Heinz

* Betreff angepasst zwecks Wiederauffindbarkeit - florian

Last edited by florian (08.07.2020 19:28:04)

Offline

#2 24.06.2020 09:11:14

florian
Administrator

Re: Nur einmal Daten absenden erlauben [mit PollsNew]

Nur am Rande gefragt: Das Poll-Modul ist/war nicht geeignet?

Je nachdem, wie manipulationssicher die Abstimmung sein soll, könnte man entweder - denke ich - vergleichsweise einfach mit einem Cookie und einem Code2-Abschnitt auf der Abstimmungsseite Mehrfachabstimmungen unterbinden.
Sicherer (und aufwändiger) wäre, nach erfolgter Abstimmung ein entsprechendes Flag in den Benutzeraccountdaten zu setzen (evtl. dafür User Extend "verbiegen") und dieses dann auf der Abstimmungsseite abzufragen und abhängig davon das Formular anzeigen oder halt nicht.

Um Missverständnissen vorzubeugen: ich könnte mir vorstellen, dass es auf diese Weisen umsetzbar ist, selbst programmieren kann ich's nicht.

Offline

#3 24.06.2020 13:38:50

bbs2
Member

Re: Nur einmal Daten absenden erlauben [mit PollsNew]

Hallo,

das polls-modul habe ich noch nicht getestet. Danke für den Vorschlag. Ich werde es probieren.

Die Idee mit dem flag hatte ich auch schon. Der Eingriff in mpform ist mir aber
zu aufwändig, denn nächstes Jahr finden vielleicht wieder lebhafte Präsenzversammlungen statt.
Aufwand und Ertrag müssen in einem vernünftigen Verhältnis stehen, vor allem, wenn man
es ehrenamtlich macht.

Gruß
Heinz

Offline

#4 24.06.2020 15:49:52

bernd
Developer

Re: Nur einmal Daten absenden erlauben [mit PollsNew]

Das Poll-Modul hat ja von Haus aus schon eine einstellbare Neuabstimmungs-Sperre, dies basiert allerdings auf der Besucher-IP.
In wie weit das ausreichend ist, keine Ahnung?
Man könnte zwar an der Stelle recht einfach statt der IP die User-ID verwenden, das würde aber leider das Prinzip der "geheimen Abstimmung" gründlich aushebeln ...


... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...

Offline

#5 24.06.2020 22:45:35

mrbaseman
Developer

Re: Nur einmal Daten absenden erlauben [mit PollsNew]

Die Aufgabe an sich ist äußerst nicht-trivial. Einerseits sollte man möglichst sicher feststellen können ob ein user schon abgestimmt hat oder nicht, also wäre es schon gut, darüber serverseitig eine Tabelle zu führen, andererseits soll die Abstimmung geheim sein. Die Stimmen sollten also in einer anderen Tabelle  nur gezählt werden und es sollte nicht nachvollziehbar sein, wer wie abgestimmt hat, am besten auch nicht, indem man die Veränderungen beider Tabellen beobachtet.

Das in einem Modul für exakt diesen Zweck zu realisieren, halte ich für ziemlich schwierig. Noch schwieriger wird es wenn man ein Modul, das anders konzipiert ist, dafür zweckentfremden möchte...

Wenn man an manchen Stellen Kompromisse eingeht, wird's wahrscheinlich einfacher, aber man sollte sich Gedanken über die möglichen Folgen der Kompromisse machen

Offline

#6 25.06.2020 08:00:57

berny
Member

Re: Nur einmal Daten absenden erlauben [mit PollsNew]

nan könnte die Email verschlüsselt speichern und bei Abstimmung vergleichen.

Analog zu den Passwörtern.

Klar könnte man entschlüsseln, aber das wäre dann immer ein Problem.

Oder eine neue Spalte in der db, wo jede Abstimmung eine id erhält, und der eingeloggte user ein 0 oder 1 erhält, je nach Abstimmung.

mit code 2 prüfen, ob 0 oder 1, bei 1 erscheint der hinweis, dass die Abstimmung erfolgte, und es erscheint kein form.

Das mp form über eine seite laufen lassen, die das mit code2 einträgt.

Etwas umständlich, weil alle eventualitäten ( zb Direktaufruf) geprüft werden müssten, aber durchaus machbar.

Last edited by berny (25.06.2020 08:04:29)

Offline

Liked by:

mrbaseman

#7 25.06.2020 08:46:10

bbs2
Member

Re: Nur einmal Daten absenden erlauben [mit PollsNew]

Hallo,

auch die derzeitige Version mit dem IP-Vergleich verhindert trotz eingestellter Blockade nicht die mehrfache Abgabe von Stimmen.
Ich habe testweise von mehreren Geräten aus abgestimmt. Dies war möglich.
Dies ist bei einer öffentlichen Umfrage auch nicht weiter schlimm.

Für eine geheime Abstimmung in einer Online-Mitgliederversammlung mit z.B. einem 24-stündigen
Abstimmungszeitraum ist dies nicht geeignet. Andererseits verhindert der IP-Vergleich die Teilnahme eines weiteren
Mitglieds (z.B. Ehemann oder Ehefrau) an der Abstimmung, wenn im Haushalt nur ein Gerät vorhanden ist.
Dies ist vereinsrechtlich nicht zulässig.

Lösungsvorschlag:

1. Für öffentliche Umfragen das Modul so belassen wie es ist. Das Meinungsbild wird wohl durch die mehrfache
    Abgabe von Stimmen über verschiedene Geräte/Kommunikationskanäle kaum verfälscht.

2. Onlineabstimmungen im Rahmen einer Mitgliederversammlung sollten nur mit privaten/registrierten Seiten stattfinden.
    Dieser Sichtbarkeitsstatus wäre also abzufragen
     Bei einer privaten oder registrierten Seite muss sich das Mitglied einloggen.
    Die Seite selbst bekommt ein Startdatum und ein Ablaufdatum und eine Neuabstimmung wird blockiert (z.B. 72 Stunden)
    Bei Stimmabgabe wird statt der IP-Adresse die User-ID in verschlüsselter Form gespeichert.
    Die Verschlüsselung muss dabei nicht besonders sicher sein. Es reicht aus, dass die Personen, die Zugriff auf die
    Tabelle haben, nicht einfach die User-ID in Klarform lesen können Diese Personen (i.d.R. nicht mehr als zwei) werden
    zudem Vertrauenspersonen sein.

3. Die Mitglieder selbst sollten sich nicht als Benutzer registrieren können, sondern lediglich ihr Passwort ändern dürfen.
    Somit kann sich ein Mitglied keine neue Benutzer-ID verschaffen.
    Die Registrierung erfolgt durch den Admin. Dies habe ich bereits jetzt so realisiert.

Ich vermute, dass hierfür der Programmierungsaufwand überschaubar ist, da lediglich in Abhängigkeit vom
Sichtbarkeitsstatus entweder die IP-Adresse oder die verschlüsselte User-ID gespeichert wird.
Allerdings bin ich kein Entwickler und kann dies nicht selbst realisieren.

Evtl. könnte man noch im backend einen Haken setzen, ob nach der Stimmabgabe das
Zwischenergebnis angezeigt werden soll. Muss aber nicht sein.

Viele Grüße
Heinz

Offline

#8 25.06.2020 11:45:56

mrbaseman
Developer

Re: Nur einmal Daten absenden erlauben [mit PollsNew]

Ok, mit den jetzt zusammengetragenen ideen geht es sogar schon mit etwas Zusatzaufwand direkt in mpform:

Die Email des Benutzers (eventuell verknüpft mit der Page-ID oder Section-ID für die aktuelle Umfrage) könnte man in der private_function_after_email verschlüsseln und irgendwo speichern. Dieses "Irgendwo" müsste man sich noch genauer überlegen.  In der submissions-Tabelle wäre blöderweise auch das Abstimmungsergebnis, und da die Emails der registrierten Benutzer bekannt sind, lässt sich das recht einfach wieder zusammenführen. Also eine separate Tabelle oder Datei wäre hier angeraten. (Gibt's eigentlich ein Snippet, mit dem man key-value Paare speichern kann, so zum Beispiel wie bei den Settings? In die Settings-Tabelle würde ich so Zeug aber nicht mit rein schreiben wollen). Hat man also die verschlüsselte Mail irgendwo abgespeichert, kann man in der private_function_before_email die Mail auch verschlüsseln und gegen die bereits abgelegten Werte gegenchecken. Gibt es bereits einen Match gibt man FALSE zurück und kann so den User vor weiteren Eintragungen aussperren.

Offline

#9 25.06.2020 12:23:23

bernd
Developer

Re: Nur einmal Daten absenden erlauben [mit PollsNew]

Gut, dann mal das ganze aus der Sicht des Poll-Moduls.

Ich würde das nicht (wie von Heinz angedacht) an die Sichtbarkeit der Seite binden sondern eher im Backend eine Auswahlmöglichkeit schaffen ob IP oder Email-Adresse des eingelogten Benutzers verwendet werden soll.
Bei Auswahl Email, eben diese (anstelle der IP) verschlüsselt mit speichern.
Die stünde dann zwar ebenfalls in der Ergebnis-Tabelle, aber das würde doch eine entsprechende "kriminelle" Energie erfordern sie zu entschlüsseln und mit den Klartex Email-Adressen aus der User-Tabelle abzugleichen.

Nicht das ich mich jetzt um die Arbeit reißen würde nochmal am Poll_Modul zu schrauben, aber der Aufwand scheint mir überschaubar...


... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...

Offline

#10 25.06.2020 12:33:39

bbs2
Member

Re: Nur einmal Daten absenden erlauben [mit PollsNew]

Hallo Bernd,

dies ist eine gute Idee. Man könnte dann generell auch die email-Adresse
als Loginnamen verwenden.

Viele Grüße
Heinz

Offline

#11 25.06.2020 16:06:11

bernd
Developer

Re: Nur einmal Daten absenden erlauben [mit PollsNew]

Here we go.
Anbei eine neue Version des Poll-Moduls zum testen.
Zwei neue Optionen:

  • "Neuabstimmung blockieren durch" IP-Adresse oder Email-Adresse (nur für registrierte und eingelogte Benutzer)
    beide Werte werden verschlüsselt gespeichert

  • "Ergebnis nach Abstimmung anzeigen?"

Ich hoffe das es so funktioniert wie gedacht angel

Bei der Gelegenheit gleich noch die Unschönheit beseitig das man nach "Abstimmungsergebnis löschen" noch seperat speichern musste.

======================

Edit:
habe das ZIP nochmal ausgetauscht.
Keine funktionalen Änderungen, lediglich eine kleine Unschönheit in der upgrade.php im Hinblick auf MySQL-Strict behoben.

Last edited by bernd (26.06.2020 16:33:34)


... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...

Offline

Liked by:

Slugger, bbs2, berny

#12 25.06.2020 17:24:45

bbs2
Member

Re: Nur einmal Daten absenden erlauben [mit PollsNew]

Hallo Bernd,

erste Tests verliefen erfolgreich. Ich habe es mit 2 unterschiedlichen Benutzern getestet.
Ich konnte für jeden User nur einmal vom selben Rechner aus abstimmen.
Auch über die Datenbanktabelle ist der User praktisch nicht identifizierbar.

Morgen werde ich weitere user anlegen und mehr testen.

Super.
Danke

Viele Grüße
Heinz

Offline

#13 08.07.2020 15:34:09

bbs2
Member

Re: Nur einmal Daten absenden erlauben [mit PollsNew]

Hallo Bernd,

großes Lob für das Modul.

Ich benutze das Modul für eine Abstimmung gemäß dem folgenden § 5 Abs. 3 des

Gesetzes zur Abmilderung der Folgen der COVID-19-Pandemie im Zivil-, Insolvenz- und Strafverfahrensrecht
Vom 27. März 2020

§ 5 Vereine und Stiftungen

(1) Ein Vorstandsmitglied eines Vereins oder einer Stiftung bleibt auch nach Ablauf seiner Amtszeit bis zu seiner Abberufung oder bis zur Bestellung seines Nachfolgers im Amt.
(2) Abweichend von § 32 Absatz 1 Satz 1 des Bürgerlichen Gesetzbuchs kann der Vorstand auch ohne Ermächtigung in der Satzung Vereinsmitgliedern ermöglichen,

1. an der Mitgliederversammlung ohne Anwesenheit am Versammlungsort teilzunehmen und Mitgliederrechte im Wege der elektronischen Kommunikation auszuüben oder

2. ohne Teilnahme an der Mitgliederversammlung ihre Stimmen vor der Durchführung der Mitgliederversammlung schriftlich abzugeben.

(3) Abweichend von § 32 Absatz 2 des Bürgerlichen Gesetzbuchs ist ein Beschluss ohne Versammlung der Mitglieder gültig, wenn alle Mitglieder beteiligt wurden, bis zu dem vom Verein gesetzten Termin mindestens die Hälfte der Mitglieder ihre Stimmen in Textform abgegeben haben und der Beschluss mit der erforderlichen Mehrheit gefasst wurde.

Das Modul funktioniert hierfür sehr gut. Die Mitglieder sind angetan.

Folgendes ist zu beachten:
1.    Es ist die email-Adresse für die Blockierung einer 2. Stimmabgabe zu verwenden
2.    Neben einer Blockierung für den Abstimmungszeitraum habe ich die
Seite mit einem zeitlichen Ablauf in der Abschnittsverwaltung versehen.
3.    Die Mitglieder können sich nicht selbst registrieren, um eine zweite Stimmabgabe über eine Registrierung durch das Mitglied zu vermeiden.
4.    Sie können aber die registrierten Daten einsehen und ändern (z.B. Passwort und email-Adresse)
5.    Während der Stimmabgabe habe ich in der form_preferences.twig das email-Feld disabled geschaltet, damit nicht durch eine Änderung der email-Adresse eine zweite Stimme erschlichen wird. Hier wäre zu überlegen, ob für die Blockierung die USER_ID besser wäre, da diese auf keinen Fall durch den User geändert werden kann.
6.    Die Stimmabgabe ist absolut geheim.
7.    Für die Entlastung des Vorstands sind lt. BGB Vorstandsmitglieder nicht stimmberechtigt. Daher habe ich zwei Usergruppen gebildet: Mitglieder, Vorstand. Die Gruppe Vorstand hat keinen Zugang zur Stimmabgabe bzgl. der Entlastung.

Fazit: Ein sehr gutes und empfehlenswertes Modul, auch für gesetzeskonforme Abstimmungen.

Offline

#14 08.07.2020 16:14:36

berny
Member

Re: Nur einmal Daten absenden erlauben [mit PollsNew]

Wie ist es, wenn ich mit einer fremden E-mail (zb andereres Mitglied) abstimme?

wird das aufgefangen?

Offline

#15 08.07.2020 16:33:48

bbs2
Member

Re: Nur einmal Daten absenden erlauben [mit PollsNew]

Hallo,

das geht nicht, da jedes Mitglied sein eigenes login hat mit Benutzername und Passwort.
Für die email-Änderung muss sich das Mitglied zuerst einloggen.
Die email eines anderen Mitglieds ist nicht nutzbar. Dazu müsste das Mitglied A in seinem
Profil die email-Adresse auf die Adresse von Mitglied B ändern. Dies lehnt jedoch die
Benutzerverwaltung wegen email-Dopplung ab. Kein Mitglied kann also einem anderen
Mitglied die Stimme wegnehmen.

Einziges Problem:
1. Er kann abstimmen und ist dann bis zum Ende des Abstimmungszeitraums blockiert.
2. Nun ändert er seine Emailadresse im Profil  (frontend) und könnte mit dieser
    differenten Adresse noch einmal abstimmen. Besser wäre also die USER_ID als Blockadekriterium.
3. Daher müssen im Abstimmungszeitraum Änderungen der email-Adresse unterbunden werden.
    Dies kann ich im frontend, jedoch nicht, wenn er sich im backend mit meineurl/admin anmeldet
    Die Mitglieder in unserem Verein wissen jedoch nicht, wie sie in das backend gelangen.
    Hier bleibt grundsätzlich ein Restrisiko, eine Lücke.

Viele Grüße
Heinz

Offline

#16 08.07.2020 16:48:56

bernd
Developer

Re: Nur einmal Daten absenden erlauben [mit PollsNew]

Hallo Heinz,

erstmal danke für das ausführliche Feedback.
Es sieht wohl so aus, dass das Modul die Tage noch mal auf den OP-Tisch muss und als weiteres Blockadekriterium die USER_ID dazu kommen müsste  wink


... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...

Offline

Liked by:

bbs2

#17 08.07.2020 17:12:03

Slugger
Member

Re: Nur einmal Daten absenden erlauben [mit PollsNew]

Ist jetzt die Rede von mpform oder pollsnews?

Wenn pollsnews ... Verkehrtes Bereich wink


Hoster: ALL-INKL *** Grundsätzliche WBCE Konfig ***
WBCE: 1.4.4 • BE: 2.1.0 • PHP: 7.4.5
1. Projekt: FE: lichtfjyr • BE: Argos * 2. Projekt: FE: WBCEZon • BE: Argos * 3. Projekt: FE: WBCETik • BE: Argos
Status  OK

Offline

#18 08.07.2020 19:29:44

florian
Administrator

Re: Nur einmal Daten absenden erlauben [mit PollsNew]

Wenn pollsnews ... Verkehrtes Bereich

Korrekt, ich habe den Thread aus dem mpform-Bereich herausgenommen.

Offline

Liked by:

Slugger, bbs2

Board footer

Powered by FluxBB

up