Addon Tippspiel Benutzeranmeldung (SPAMMER)

In diesem Forum werden Probleme oder Fragen zu Addons des LMO's behandelt.
Antworten
Benutzeravatar
Tobi
LMO-Neuling
LMO-Neuling
Beiträge: 42
Registriert: So 8. Jan 2023, 19:29

Addon Tippspiel Benutzeranmeldung (SPAMMER)

Beitrag 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.
Benutzeravatar
Henshingly
Administrator
Administrator
Beiträge: 600
Registriert: Sa 1. Sep 2018, 14:21
Wohnort: Dortmund

Re: Addon Tippspiel Benutzeranmeldung (SPAMMER)

Beitrag 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
Kein Support über PN oder eMail.
Support gibt es nur im Forum.

Test LMO mit Standardzugang
(ist immer die aktuelle Github Version)

Test für zukünftige Eintragung nach Github
(ist die Testumgebung bevor es ein Commit gibt)
Benutzeravatar
DwB
Fortgeschrittener LMO-Benutzer
Fortgeschrittener LMO-Benutzer
Beiträge: 348
Registriert: Mi 9. Sep 2020, 13:53

Re: Addon Tippspiel Benutzeranmeldung (SPAMMER)

Beitrag 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
Benutzeravatar
DwB
Fortgeschrittener LMO-Benutzer
Fortgeschrittener LMO-Benutzer
Beiträge: 348
Registriert: Mi 9. Sep 2020, 13:53

Re: Addon Tippspiel Benutzeranmeldung (SPAMMER)

Beitrag von DwB »

Benutzeravatar
Henshingly
Administrator
Administrator
Beiträge: 600
Registriert: Sa 1. Sep 2018, 14:21
Wohnort: Dortmund

Re: Addon Tippspiel Benutzeranmeldung (SPAMMER)

Beitrag von Henshingly »

Du Glücklicher 8-)
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
Kein Support über PN oder eMail.
Support gibt es nur im Forum.

Test LMO mit Standardzugang
(ist immer die aktuelle Github Version)

Test für zukünftige Eintragung nach Github
(ist die Testumgebung bevor es ein Commit gibt)
Benutzeravatar
Tobi
LMO-Neuling
LMO-Neuling
Beiträge: 42
Registriert: So 8. Jan 2023, 19:29

Re: Addon Tippspiel Benutzeranmeldung (SPAMMER)

Beitrag von Tobi »

Das ist ja cool, top! :-)

Ja, aktuell benutze ich den klassischen LMO. Aber großartige Arbeit!
Benutzeravatar
DwB
Fortgeschrittener LMO-Benutzer
Fortgeschrittener LMO-Benutzer
Beiträge: 348
Registriert: Mi 9. Sep 2020, 13:53

Re: Addon Tippspiel Benutzeranmeldung (SPAMMER)

Beitrag 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.
Benutzeravatar
Henshingly
Administrator
Administrator
Beiträge: 600
Registriert: Sa 1. Sep 2018, 14:21
Wohnort: Dortmund

Re: Addon Tippspiel Benutzeranmeldung (SPAMMER)

Beitrag von Henshingly »

@DwB
auf meinem Webspace verursacht

Code: Alles auswählen

$prot
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
Kein Support über PN oder eMail.
Support gibt es nur im Forum.

Test LMO mit Standardzugang
(ist immer die aktuelle Github Version)

Test für zukünftige Eintragung nach Github
(ist die Testumgebung bevor es ein Commit gibt)
Benutzeravatar
DwB
Fortgeschrittener LMO-Benutzer
Fortgeschrittener LMO-Benutzer
Beiträge: 348
Registriert: Mi 9. Sep 2020, 13:53

Re: Addon Tippspiel Benutzeranmeldung (SPAMMER)

Beitrag 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.
Benutzeravatar
Henshingly
Administrator
Administrator
Beiträge: 600
Registriert: Sa 1. Sep 2018, 14:21
Wohnort: Dortmund

Re: Addon Tippspiel Benutzeranmeldung (SPAMMER)

Beitrag 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
Kein Support über PN oder eMail.
Support gibt es nur im Forum.

Test LMO mit Standardzugang
(ist immer die aktuelle Github Version)

Test für zukünftige Eintragung nach Github
(ist die Testumgebung bevor es ein Commit gibt)
Benutzeravatar
DwB
Fortgeschrittener LMO-Benutzer
Fortgeschrittener LMO-Benutzer
Beiträge: 348
Registriert: Mi 9. Sep 2020, 13:53

Re: Addon Tippspiel Benutzeranmeldung (SPAMMER)

Beitrag 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);
}
Antworten