Seite 1 von 1
Addon Tippspiel Benutzeranmeldung (SPAMMER)
Verfasst: Do 14. Dez 2023, 19:45
von Tobi
Beim Tippspiel gibt es ja die Option: "nach Anmeldung Freischaltung erforderlich"
Gibt es die Möglichkeit zu implementieren, dass die Freischaltung nicht manuell, sondern durch einen Link in einer E-Mail freigeschaltet wird, so wie es eben auch z.B. in Foren üblich ist? Dadurch könnte man besser Fake-Anmeldungen vermeiden.
Sinnvoll wäre eventuell ebenso ein Captcha-Feld. Aber ich weiß nicht, ob sich das in den LMO noch implementieren lässt?
Ich hatte die Registrierungen fürs Tippspiel bisher immer komplett offen und zum Glück keine Spam-Probleme. Allerdings gab es jetzt immer wieder Fake-Anmeldungen mit einer nicht vorhandenen E-Mail Adresse, gefolgt von einer ständigen Passwortanforderung, die ja auch bei Nicht-Freischaltung anscheinend möglich ist. Ich gehe hier von einem Bot aus, was auch immer der Zweck dabei sein soll.
Re: Addon Tippspiel Benutzeranmeldung (SPAMMER)
Verfasst: Fr 15. Dez 2023, 22:25
von Henshingly
Ein Captcha sollte möglich sein.
Freischaltung per Link Aktivierung durch das senden an den Tipper, da sehe ich momentan keine Möglichkeit.
Grüße Henshingly
Re: Addon Tippspiel Benutzeranmeldung (SPAMMER)
Verfasst: Mo 18. Dez 2023, 10:35
von DwB
Das würde gehen.
Dazu sind ein paar Schritte notwendig.
Die lmo-admintippuseredit.php bietet einen ersten Hinweis:
Code: Alles auswählen
$pswfile=PATH_TO_ADDONDIR."/tipp/".$tipp_tippauthtxt;
$users = file($pswfile);
array_unshift($users,'');
if ($save != -1) {
$gef=0;
for($i=1;$i<count($users) && $gef==0;$i++){
$tipp_tipperdaten = explode('|',$users[$i]);
// Änderung & Nick gefunden
if($nick==$tipp_tipperdaten[0] && $newpage == 0){
$gef=1;
$save=$i;
if (!$edit) $newpage=1;
} elseif($nick==$tipp_tipperdaten[0] && $newpage == 1){
$newpage = 0;
echo getMessage($text['tipp'][24],TRUE);
}
}
if($gef==0){
$save=$i;
}
}
Die Datei mit den Tippern wird eingelesen und geschaut, ob der aktuelle Eintrag in dem Array $users dem aktuell zu bearbeitenden User entspricht.
Das kann man anwenden, das dritte Element im Array definiert, ob ein User freigeschaltet ist (=5) oder nicht (=leer).
In der Mail zum versenden ist nun also ein Link einzubauen á la "URL/verify.php?verify=
foo@bar.xyz".
Die verify.php beinhalte nun eine leichte Anpassung des obigen Codes:
Code: Alles auswählen
if($_GET['verify']==$tipp_tipperdaten[1]) { //Mail-Adresse gefunden im Array?
$gef=1
$save=$i;
$tipp_tipperdaten[2] = 5; //freigeschaltet
}
if($gef==0){
$save=$i;
}
$users[$save] =$tipp_tipperdaten[0]."|".$tipp_tipperdaten[1]."|".$tipp_tipperdaten[2]."|".$tipp_tipperdaten[3]."|".$tipp_tipperdaten[4]."|";
$users[$save].=$tipp_tipperdaten[5]."|".$tipp_tipperdaten[6]."|".$tipp_tipperdaten[7]."|".$tipp_tipperdaten[8]."|".$tipp_tipperdaten[9]."|";
$users[$save].=$tipp_tipperdaten[10]."|EOL";
require(PATH_TO_ADDONDIR."/tipp/lmo-tippsaveauth.php");
Das ist ganz grob und nicht überprüft! Man kann noch mehr auf Nummer Sicher gehen (Mail-Adresse ist leicht zu raten und dann in der URL einzugeben) und eine 12. Information speichern: einen Salt, der auch in der ULR steht und zu prüfen ist. Dann sind noch ein paar mehr Arbeiten notwendig, nämlich Generierung des Salt und Speicherung in der lmo-tippauth.txt via lmo-tippernew.php
Re: Addon Tippspiel Benutzeranmeldung (SPAMMER)
Verfasst: Di 19. Dez 2023, 11:41
von DwB
Re: Addon Tippspiel Benutzeranmeldung (SPAMMER)
Verfasst: Di 19. Dez 2023, 12:07
von Henshingly
Du Glücklicher
Mir platzt vor lauter Arbeit bald der Kopf.
Mal sehen wann ich das für den Classic LMO übernehmen kann. Denn der Fragesteller benutzt ja den.
Wie gesagt viel Arbeit
Re: Addon Tippspiel Benutzeranmeldung (SPAMMER)
Verfasst: Di 19. Dez 2023, 12:21
von Tobi
Das ist ja cool, top!
Ja, aktuell benutze ich den klassischen LMO. Aber großartige Arbeit!
Re: Addon Tippspiel Benutzeranmeldung (SPAMMER)
Verfasst: Di 19. Dez 2023, 12:49
von DwB
Henshingly hat geschrieben: Di 19. Dez 2023, 12:07
Mal sehen wann ich das für den Classic LMO übernehmen kann. Denn der Fragesteller benutzt ja den.
Wie gesagt viel Arbeit
Eigentlich nicht. Ich gehe davon aus, dass PHPMailer verwendet wird. Dann ist im alten LMO ein einzige manuelle Anpassung notwendig, der Rest kann aus dem Repository gezogen und genutzt werden:
lmo-tippernew.php
Code: Alles auswählen
require_once(PATH_TO_ADDONDIR."/tipp/lmo-tipptest.php");
include(PATH_TO_ADDONDIR."/tipp/lmo-tippsendmail.php"); //PHPMailer includen für Mailversand
.
.
.
if ($tipp_mailbeianmeldung==1) {
include(PATH_TO_ADDONDIR."/tipp/lmo-admintippbenachrichtigung.php");
}
include(PATH_TO_ADDONDIR."/tipp/lmo-admintippverify.php"); //Mailversand zur Mailbestätigung
}
// end ($newpage==1)
Und die Lang-files, da kann aber auch einfach nur die beiden neuen Elemente 305 und 306 gezogen und bei sich eingebaut werden.
Re: Addon Tippspiel Benutzeranmeldung (SPAMMER)
Verfasst: Mi 20. Dez 2023, 15:19
von Henshingly
@DwB
auf meinem Webspace verursacht
in der lmo-admintippverify.php ein Problem.
In der eMail die der neue User erhält befindet sich nun folgender Link zur Freischaltung.
beachte die doppelte
https:// am Linkanfang.
Gruß Henshingly
Re: Addon Tippspiel Benutzeranmeldung (SPAMMER)
Verfasst: Do 21. Dez 2023, 07:57
von DwB
Ah, Deine install.php ist anders.
Code: Alles auswählen
if (strpos(dirname($_SERVER['SCRIPT_NAME']),"/install")!==FALSE) {
$url=(isset($_SERVER['HTTPS'])?'https':'http').'://' . $_SERVER['HTTP_HOST'].dirname(dirname($_SERVER['SCRIPT_NAME']));
} else {
$url=(isset($_SERVER['HTTPS'])?'https':'http').'://' . $_SERVER['HTTP_HOST'].dirname(($_SERVER['SCRIPT_NAME']));
}
Das ist formal so nicht ganz sauber.
$_SERVER['HTTPS'] kennt zwei Zustände: On und Off. Mit dem obigen Code wird, unabhängig des Zustandes von $_SERVER['HTTPS'] IMMER https gewählt, wenn der Eintrag vorhanden ist. Das ist faktisch falsch.
Darum habe ich mich für
Code: Alles auswählen
if (strpos(dirname($_SERVER['SCRIPT_NAME']),"/install")!==FALSE) {
$url='//' . $_SERVER['HTTP_HOST'].dirname(dirname($_SERVER['SCRIPT_NAME']));
} else {
$url='//' . $_SERVER['HTTP_HOST'].dirname(($_SERVER['SCRIPT_NAME']));
}
entschieden und lasse den Browser das zu nutzende Protokoll selber wählen. In der init_parameters.php steht nun in $lmo_url ein String, beginnend mit //.
Da in der Mail aber das Protokoll angegeben werden muss, um den Link selektierbar im Outlook, Gmail, Thunderbird, was weiß ich für Clients, muss das Protokoll mitgegeben werden. Deshalb lasse ich das ermitteln und hänge es vor URL_TO_ADDONDIR, was ja so auflöst:
Code: Alles auswählen
if (!defined('URL_TO_LMO')) define('URL_TO_LMO', $lmo_url);
if (!defined('URL_TO_ADDONDIR')) define('URL_TO_ADDONDIR', URL_TO_LMO.'/addon');
Fun fact:
Es gibt wohl auch Einstellungen (eher selten) im Server, da wird gar kein $_SERVER['HTTPS'] ausgegeben, dafür aber ein $_SERVER['SERVER_PORT']. Ist letzterer auf 443 gestellt, so handelt es sich auch um ein verschlüsseltes Protokoll.
Re: Addon Tippspiel Benutzeranmeldung (SPAMMER)
Verfasst: Do 21. Dez 2023, 09:01
von Henshingly
Das man es dem Browser überlässt welches Protokoll beim Aufruf des LMO's aus gewählt wird ist mir am Anfang nicht eingefallen.
Bei den ersten Updates des Ur-LMO's aus der Repositorie auf
https://sourceforge.net/ war mir bei den ersten ersten Test nur aufgefallen das bei der Installation
immer das Protokoll http in der init-parameters.php für die Variable $lmo_url als abolute URL zum LMO eingetragen wurde.
Also habe ich damals versucht das in der install.php abzufangen.
Dies hat ja nun bisher funktioniert.
Mit Deiner Herangehensweise ist das natürlich viel besser. Das würde nämlich auch Probleme bei LMO-Nutzer erst gar nicht auftauchen lassen, die Ihren Webspace erst nachträglich mit 'nem Zertifikat verschlüsseln (Soll es ja immer noch geben, das Betreiber Ihren Webspace auf http laufen lassen).
Ich stehe aber nun vor dem Problem, das ich MEINEN Fehler in künftigen Updates des LMO's wieder grade biegen muss.
Denn es werden nicht alle Benutzer bei einem LMO Update die install.php im install Ordener ausführen, um die $lmo_url zu ändern.
Da gehen mir zwar grade ein paar Sachen durch den Kopf um es zu bewerkstelligen aber die momentane Weihnachtszeit, die Arbeit, die dünne Personaldecke und fehlende Zeit machen mir dieses erst mal nicht möglich.
Danke für die ausführliche Erklärung Deiner Herangehensweise.
Grüße Henshingly
Re: Addon Tippspiel Benutzeranmeldung (SPAMMER)
Verfasst: Do 21. Dez 2023, 10:10
von DwB
Streng genommen bietest Du ja ein Release an. In einem Release kann sich ja durchaus auch technisch einige Dinge ergeben.
Daher sollte in den Release-Notes immer stehen, was sich fundamental ändert und wenn Du das Protokoll NICHT mehr in die init-parameters.php schreibst, sondern wie ich verfährst, sollte das dort explizit vermerkt werden.
Alle, die Deinen LMO neu installieren, haben das Problem nicht.
Alternativ in die init.php eine kleine Subroutine einbauen, die den Eintrag prüft und ggf. das http(s) aus dem String $lmo_url entfernt.
Nach dem Einlesen der Werte und vor Definition der Konstanten.
Code: Alles auswählen
if(str_contains($lmo_url, "http")) {
$array = array("http:", "https:");
$lmo_url = str_replace($array, "", $lmo_url);
}