Ankündigung

Einklappen
Keine Ankündigung bisher.

Login funktioniert nur noch bei Mozilla

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Login funktioniert nur noch bei Mozilla

    Mahlzeit allesamt.

    Ich verwende seit Jahren ein Session-Basierendes Login um den ganzen Kram nicht in den Cookies halten zu müssen.

    Jetzt ist mir aufgefallen das Login nur noch im Mozilla funktioniert.
    Auch auf dem Handy (Android) musste ich erst Firefox installieren um im CMS arbeiten zu können.

    Das Verhalten auf Firefox ist wie gewohnt zuverlässig, Login wird geprüft und du landest auf der R-Dir Seite, die dich per META Refresh erneut in dieselbe Maske lädt. Also damit du dann das Userinterface sehen kannst. Hab ich schon immer so gemacht, war nie ein Problem.

    Auf allen anderen - Chrome, Opera, Edge, IE passiert nichts. Es wird nicht5 einmal die Loginprüfung aufgerufen. Aber die URL ist in der Adresszeile auf Loginprüfung gestellt. Wenn ich die aufrufe, kommt das zu erwartende Login Fehlgeschlagen, weil ja keine Daten gesendet wurden.

    Wenn Ihr nach Betreten der Seite eine weiße Seite seht, einfach ein paar mal mit F5 aktualisieren dann läuft das CMS wieder.

    Hat jemand eine Ahnung was da den Browser so ärgert, dass der mir jeden Dienst verweigert?

    VG Hilmer


  • #2
    Was hat die Frage mit PHP zu tuin? Ohne PHP-Code kann man dazu nichts sagen.

    MOD: Verschoben von PHP-Fortgeschrittene.

    Kommentar


    • #3
      Es wird nicht5 einmal die Loginprüfung aufgerufen. Aber die URL ist in der Adresszeile auf Loginprüfung gestellt. Wenn ich die aufrufe, kommt das zu erwartende Login Fehlgeschlagen, weil ja keine Daten gesendet wurden.
      haste eine firefox js besonderheit drin ?
      und:
      die beiden urls oben scheinen mal icdentisch ?

      Das Problem tritt auch nur bei der neueren Version auf, obwohl am Login nichts geändert wurde:
      haste ein changelog ?

      Kommentar


      • #4
        Danke für den Hinweis.

        Also die prüfende Funktion macht seine Arbeit. Hier ein Code-Segment:
        PHP-Code:
                 $unametrim($uname);
                 
        $upwd trim($upwd);
                 if (!
        array_key_exists($unameself::$userfile)) {
                     
        setup::addlog("session::ckclogin failed#1 for user; $uname");
                     return(
        false);
                 }
                 
        $fnsetup::get('diruser').self::$userfile[$uname]['file'];
                 if ((!
        fileio::getfiletime($fn)) || (strlen(self::$userfile[$uname]['file'])< 12)) {
                     
        setup::addlog("session::ckclogin file $fn not found"true);
                     return(
        false);
                 }
                 
        $fcsession::$shuffle->decode_stdkey(session::$shuffle->decode_dns(fileio::getsystemkontent($fn)), $uname);
                 
        $uctnexplode("~#~"trim($fc));

                 if (
        self::$shuffle->encodehash($upwd)!= $uctn[2]) {
                     
        setup::addlog("session::ckclogin failed#2 for user; $uname");
                     return(
        false);
                 } 
        Zum Codieren des Passworts verwende ich dies hier:
        PHP-Code:
             public function encodehash($what$mode'md5') {
                 switch (
        $mode)
                 {
                     case 
        'gost':
                         return(
        hash('gost'$what));
                         break;
                     default:
                         return(
        hash('md5'$what));
                         break;
                 }
             } 
        Aber soweit scheint es erst gar nicht zu kommen.
        Es sieht so aus als würde der Browser zwar den Formularaufruf annehmen, aber die Ausgabe wird erst garnicht in der Seite aufgebaut.

        Kommentar


        • #5
          Achso, ja. Und das Login kommt komplett ohne JS aus.

          Die verantwortliche Loginhandler ist das hier:

          PHP-Code:
          private function cklogin() {
                   
          $olduser$_SESSION["nina"]["username"];
                   if (
          session::ckclogin($_POST['username'], $_POST['passwd'])) {
                       
          rdparam::setparam("fwd""0");
                       
          rdparam::setparam("action""0");
                       
          $metarefileio::getsystemkontent(setup::get('dirtpl').'system/metare.tpl');
                       
          $metarestr_replace("%retime%""2"str_replace("%reurl%"toolbox::getlink(), $metare));
                       
          $msg"<div id="iconinfo32"></div> Willkommen bei N.I.N.A.<br>Ein erfolgreichen Arbeitstag %username%".$metare."<br>";
                       
          setup::addmsg(str_replace("%username%"$_SESSION["nina"]["username"], $msg));
                       
          setup::addlog("usmailio::cklogin Login ok for user; ".$_SESSION["nina"]["username"]." olduser: ".$olduser);
                       unset(
          $_SESSION["nina"]["strdlgformdata"]);
                       
          sleep(1);
                   } else {
                       
          setup::addmsg("<div id="iconstop32"></div> Login fehlgeschlagen<br><br>");
                       
          sleep(2);
                   }
               } 
          Also man bekommt keine Meldung und das Formular bleibt gefüllt

          Kommentar


          • #6
            Die verantwortliche Loginhandler ist das hier:
            ohne argumente und .liefert nichts zurück ?
            strange ...
            und es läuft weder in if noch in else oder wie ?

            PHP-Code:
                  $olduser$_SESSION["nina"]["username"
            ;
            wird $oldusername irgendwo noch verwendet ?

            Kommentar


            • #7
              Jupp, hier:
              setup
              ::addlog("usmailio::cklogin Login ok for user; ".$_SESSION["nina"]["username"]." olduser: ".$olduser);


              Um Account-Hopper zu erkennen, falls im System missbrauch getrieben wurde

              Kommentar


              • #8
                PHP-Code:
                ".$_SESSION["nina"]["username"]." olduser".$olduser 
                ist ja irgendwie doppelt.
                wieso checkst du bei gültigen sessiondaten überhaupt username passwd .
                ich blick bei dem code nicht so richtig durch. wozu ist das sleep ?

                Kommentar


                • #9
                  Das hab ich nicht ganz korrekt wiedergegeben.

                  Hier ist die komplette Loginprüf-Routine:
                  PHP-Code:
                  public static function ckclogin($uname$upwd) {
                           
                  $unametrim($uname);
                           
                  $upwd trim($upwd);
                           if (!
                  array_key_exists($unameself::$userfile)) {
                               
                  setup::addlog("session::ckclogin failed#1 for user; $uname");
                               return(
                  false);
                           }
                           
                  $fnsetup::get('diruser').self::$userfile[$uname]['file'];
                           if ((!
                  fileio::getfiletime($fn)) || (strlen(self::$userfile[$uname]['file'])< 12)) {
                               
                  setup::addlog("session::ckclogin file $fn not found"true);
                               return(
                  false);
                           }
                           
                  $fcsession::$shuffle->decode_stdkey(session::$shuffle->decode_dns(fileio::getsystemkontent($fn)), $uname);
                           
                  $uctnexplode("~#~"trim($fc));

                           if (
                  self::$shuffle->encodehash($upwd)!= $uctn[2]) {
                               
                  setup::addlog("session::ckclogin failed#2 for user; $uname");
                               return(
                  false);
                           }
                           
                  $_SESSION["nina"]["userid"]   = intval(self::$userfile[$uname]['id']);
                           
                  $_SESSION["nina"]["username"] = $uname;
                           
                  $_SESSION["nina"]["userhash"] = $uctn[2];
                           
                  $_SESSION["nina"]["run"]      = self::$nowtime;
                           
                  $_SESSION["nina"]["activity"] = 0;
                           return(
                  true);
                       } 
                  $oldoser ist ein Backup. Wenn das Login erfolgreich ist, wird $_SESSION["nina"]["username"] mit den neuen überschrieben.

                  Bin nur ein wenig durcheinander. Das ist ein gravierendes Problem, das setzt mir ziemlich zu

                  Kommentar


                  • #10
                    du versuchst also rauszufinden ob user in uderfile ist und ob das hash identisch ist ?
                    mit allerhand hin und her zeugs ...
                    wo steigt er nun aus ?
                    ruft der interpretter die rourtine überhaupt auf ?

                    das ganze php zeugs ist komplett browser unabhängig !!!
                    also könntest du dir auch anschauen, was sendet der browser anders bei chrome als bei firefox...

                    trim passwd finde ich doof

                    Kommentar


                    • #11
                      Das weis ich auch das PHP Browserunabhängig ist. Warum aber Chrome das Formular verweigert und Mozilla nicht, das ist mir ein Rätsel.
                      Vielleicht kennst du ja ein Forum was sich mit der Problematik beschäftige?

                      Kommentar


                      • #12
                        Ps. trimm nutze ich aus dem Grund, wenn ich ein Passwort per Copy Paste einfüge, schleichen sich unsichtbare Zeichen ein. Um das zu vermeiden, hab ich das eingesetzt. Soll einfach nur der Qualität dienen

                        Kommentar


                        • #13
                          Kann es sein das manche Browser URLS wie: HXUZRMLMSTUZHU ablehnen?
                          Formulare wie https://robertos-hüpfburgenland.de/mail_-1_kontakt.htp werden angenommen.

                          Kommentar


                          • #14
                            Wende dich doch an den Hersteller des CMS. Das, was man bis jetzt vom Code gesehen hat, ist einfach nur eine Katastrophe. Viele statische Abhängigkeiten, MD5 als Passwort-Hash, usw. Beim Anblick von dem Code stellen sich mir alle Haare auf. Mich würd nicht wundern, wenn da irgendwas (wenn nicht sogar sehr viel) fehlerhaft programmiert ist. In dem Fall ist derjenige dafür zuständig, der den Code geschrieben hat und nicht ein Programmierforum.

                            Kommentar


                            • #15
                              ein underscore ist afaik weder reserved noch unsafe :

                              schau halt an was du losschikcst und was ankommt

                              er schreibt das selbst hellbringer

                              Kommentar

                              Lädt...
                              X