Re: Session ID erstellen - Algorhytmus gesucht - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 
    Beitrag von hempelr (1976 Beiträge) am Donnerstag, 19.September.2002, 13:03.
    Re: Session ID erstellen - Algorhytmus gesucht

      Hallo, Sascha
      ich hab da was, das relativ "hacksicher" ist, und zwar nehm ich Datumsteile und addier sie zu Zahlen in nem bestimmten Zahlenbereich (abhängig von der max. zlässigen Gültigkeitsdauer der SID), speicher die bei gültiger Anmeldung in der Nutzerdb und frage sie bei jedem Aufruf des Templates wieder ab und vergleiche sie mit der übergebenen SID (Manipulation erkennbar); dann wird bei jedem Templateaufruf eine neue SID erzeugt und die max. Loginzeit addiert, das ganze wird dann mit der gesp. SID verglichen und wenn die neue SID größer als die gespeicherte ist, ein Flag gesetzt, daß die Loginzeit vorbei ist.
      Hier ist mal ein bisserl Code, vielleicht kannst du ja durchsteigen:
      # --------  SID_neu bei jedem Aufruf berechnen ------- #
      $a_debug.="${ \('-'x30) }<br>Beginn SID generieren (bei jedem Aufruf)<br>";
      $login_max = 15; # max. erlaubte Login-Zeit in Minuten
      $login_max = $login_max*60; # dergl. jetzt in Sekunden
      $anz_login_max = ($login_max/60)." Minuten";
      $sek_dag = $dag* 24 * 60 * 60;
      $sek_stund = $stund * 60 * 60;
      $sek_min = $min * 60;
      $adl = int($sek*1.13) + 21;
      $adm = int($sek * 0.75) + 39;
      $adr = int($sek * 0.4) + 19;
      $SID_lneu = (5234989+$sek_dag+$sek_stund+$sek_min+$sek)+$login_max;
      $SID_mneu = (3197452+$sek_dag+$sek_stund+$sek_min+$sek)-234+$login_max;
      $SID_rneu = (7430929+$sek_dag+$sek_stund+$sek_min+$sek)-345+$login_max;
      $SID_neu = $adl.$SID_lneu.".".$adm.$SID_mneu.".".$adr.$SID_rneu; # SID_neu bei jdem Aufruf als Vergleichswert
      $a_debug.="SID_neu => $SID_neu generiert<br>";
      $a_debug.= "${ \('-'x5) } <b>Ende SID generieren</b> ${ \('-'x5) }<br>";
      # -------- Ende SID erstellen ------- #
      # -------- Beginn Zugangsberechtigung ermitteln ------- #
      $a_debug.= "${ \('-'x5) } <b>Beginn Block Zugangsberechtigung prüfen </b>${ \('-'x5) }<br>";
      if($namerein ne "" && $SID eq "") # wenn namerein nicht leer u. keine SID (Nutzername als Übergabeparameter, Erstaufruf)
      {
        $a_debug.="Keine SID - \$namerein vorhanden => $namerein<br>";
        get ["name", "==!", $namerein], "$db1"; # Nutzerdaten holen
        if($pwrein ne "")#  && $pwrein eq $passwort && $frei ne "" ) # Passwort und Freigabe holen und vergleichen
           {
           $a_debug.="...\$pewrein vorhanden => $pwrein<br>";
           if ($pwrein eq $passwort)
              {
              $a_debug.="......\$pwrein gleich \$passwort ($pwrein = $passwort)<br>";
              if ($frei ne "")
                 {
                 $a_debug.=".........\$frei vorhanden (Nutzer freigeschaltet)<br>";
                  $SID = $SID_neu; $uid = $_id;
                  $anz_anmeld++;
                  mod "name==!$namerein", ["n_sid", "$SID", "anz_anmeld", "$anz_anmeld"], "$db1"; # SID, Anz. Anme.in DB speichern
                  $a_debug.=".........\$n_sid =>$n_sid und anz_anmeld =>$anz_anmeld in db1 => $db1 geändert<br>";
                  get ["name", "==!", $namerein], "$db1"; # Nutzerdaten nochmal holen (wegen Neubelegung von anz_anmeld)
                  $zug = 4;
                 }else
                 {
                 $a_debug.=".........\$frei nicht vorh. (Nutzer nicht freigesch.)<br>";
                 $zug = 2;
                 }
              }else
              {
              $a_debug.=".....\$pwrein ungleich $\passwort ($pwrein <> $passwort<br>";
              $zug = 1;
              }
          }
      }elsif ($SID ne "" && $uid ne "" ) # ansonsten wenn SID und uid belegt sind (weitere Aufrufe nach Erstaufruf)
      {
        $a_debug.="SID => $SID und uid => $uid vorhanden<br>";
        get ["Id", "==!", $uid], "$db1"; # Daten für Nutzer mit Id=uid holen und SID vergleichen
        if ($logout == 0)
        {
        $a_debug.="DS mit \$uid $uid geholt, \$logout leer - Prüfung auf SID-Gültigkeit folgt<br>";
        # ........ SIDmax aus n_sid und login_max generieren und mit SIDneu vergleichen  ........ #
        $pt1=index($n_sid, ".");
        $SIDmr = substr($n_sid,$pt1+1);
        $pt2 = index($SIDmr, ".");
        $SID_lmax = substr($n_sid,2,$pt1-2)+$login_max;
        $SID_mmax = substr($n_sid, $pt1+1+2, $pt2+1-2)+$login_max;
        $SID_rmax = substr ($n_sid, $pt2+$pt1+4)+$login_max;
        $SID_max = $adl.$SID_lmax.".".$adm.$SID_mmax.".".$adr.$SID_rmax;
        #
        if ($SID eq $n_sid)
           {$a_debug.="SID und n_id sind gleich (keine Manipulation)<br>";
              if (($SID_lmax > $SID_lneu) || ($SID_mmax > $SID_mneu) || ($SID_rmax > $SID_rneu))
                 { $a_debug.="SID gültig SID => $SID | uid => $uid<br>";
                   $zug = 4;
                 }else
                 { $a_debug.="SID abgelaufen SID => $SID | uid => $uid<br>";
                  $zug = 3;
                  $nick = $name;
                 }
           }else
           {
           $a_debug.="SID nicht gleich n_sid:<br>\$SID => $SID";
           $zug = -1;
           }
        }elsif ($logout == 1)
        {
        $a_debug.="DS mit \$uid $uid geholt, \$logout nicht leer<br>";
        $zug = 5;
        }
      $a_debug.="\$SID mit $SID belegt | Zugangscode \$zug => $zug<br>";
      }
      $a_debug.= "${ \('-'x5) } <b>Ende Block Zugangsberechtigung püfen</b> ${ \('-'x5) }<br>";
      In Abhängigkeit des gesetzten Flags $zug erfolgen dann die weiteren Aktionen, bspw. werden die Statusmeldungen für das jeweilige Anmeldeergebnis in einen Hash geschrieben, dessen Elemente dann einfach in die HTML-Ausgabe eingebaut werden.
      
      Wenn du willst, schick ich dir mal den Code des gesamten Templates per mail, ist recht lang und noch nicht ganz fertig, die Grundfunktionen gehen aber schon
      Gruß
      Ruben


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Sascha Fitzner (476 Beiträge) am Donnerstag, 19.September.2002, 12:39. WWW: planet-gaga.de
    Session ID erstellen - Algorhytmus gesucht

      Hallo Forum,

      hat vielleicht einer der Bp-Programmierer eine gute routine um eine sessionid zu errechnen die möglichst eindeutig ist? habe bereits im forum gesucht bin aber nicht wirklich weitergekommen.

      eine variable die von bp vergeben wird (zb.$_sid) gibt es wohl nicht oder?

      danke für eure antworten

      sascha fitzner

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Donnerstag, 19.September.2002, 13:03.
    Re: Session ID erstellen - Algorhytmus gesucht

      Hallo, Sascha
      ich hab da was, das relativ "hacksicher" ist, und zwar nehm ich Datumsteile und addier sie zu Zahlen in nem bestimmten Zahlenbereich (abhängig von der max. zlässigen Gültigkeitsdauer der SID), speicher die bei gültiger Anmeldung in der Nutzerdb und frage sie bei jedem Aufruf des Templates wieder ab und vergleiche sie mit der übergebenen SID (Manipulation erkennbar); dann wird bei jedem Templateaufruf eine neue SID erzeugt und die max. Loginzeit addiert, das ganze wird dann mit der gesp. SID verglichen und wenn die neue SID größer als die gespeicherte ist, ein Flag gesetzt, daß die Loginzeit vorbei ist.
      Hier ist mal ein bisserl Code, vielleicht kannst du ja durchsteigen:
      # --------  SID_neu bei jedem Aufruf berechnen ------- #
      $a_debug.="${ \('-'x30) }<br>Beginn SID generieren (bei jedem Aufruf)<br>";
      $login_max = 15; # max. erlaubte Login-Zeit in Minuten
      $login_max = $login_max*60; # dergl. jetzt in Sekunden
      $anz_login_max = ($login_max/60)." Minuten";
      $sek_dag = $dag* 24 * 60 * 60;
      $sek_stund = $stund * 60 * 60;
      $sek_min = $min * 60;
      $adl = int($sek*1.13) + 21;
      $adm = int($sek * 0.75) + 39;
      $adr = int($sek * 0.4) + 19;
      $SID_lneu = (5234989+$sek_dag+$sek_stund+$sek_min+$sek)+$login_max;
      $SID_mneu = (3197452+$sek_dag+$sek_stund+$sek_min+$sek)-234+$login_max;
      $SID_rneu = (7430929+$sek_dag+$sek_stund+$sek_min+$sek)-345+$login_max;
      $SID_neu = $adl.$SID_lneu.".".$adm.$SID_mneu.".".$adr.$SID_rneu; # SID_neu bei jdem Aufruf als Vergleichswert
      $a_debug.="SID_neu => $SID_neu generiert<br>";
      $a_debug.= "${ \('-'x5) } <b>Ende SID generieren</b> ${ \('-'x5) }<br>";
      # -------- Ende SID erstellen ------- #
      # -------- Beginn Zugangsberechtigung ermitteln ------- #
      $a_debug.= "${ \('-'x5) } <b>Beginn Block Zugangsberechtigung prüfen </b>${ \('-'x5) }<br>";
      if($namerein ne "" && $SID eq "") # wenn namerein nicht leer u. keine SID (Nutzername als Übergabeparameter, Erstaufruf)
      {
        $a_debug.="Keine SID - \$namerein vorhanden => $namerein<br>";
        get ["name", "==!", $namerein], "$db1"; # Nutzerdaten holen
        if($pwrein ne "")#  && $pwrein eq $passwort && $frei ne "" ) # Passwort und Freigabe holen und vergleichen
           {
           $a_debug.="...\$pewrein vorhanden => $pwrein<br>";
           if ($pwrein eq $passwort)
              {
              $a_debug.="......\$pwrein gleich \$passwort ($pwrein = $passwort)<br>";
              if ($frei ne "")
                 {
                 $a_debug.=".........\$frei vorhanden (Nutzer freigeschaltet)<br>";
                  $SID = $SID_neu; $uid = $_id;
                  $anz_anmeld++;
                  mod "name==!$namerein", ["n_sid", "$SID", "anz_anmeld", "$anz_anmeld"], "$db1"; # SID, Anz. Anme.in DB speichern
                  $a_debug.=".........\$n_sid =>$n_sid und anz_anmeld =>$anz_anmeld in db1 => $db1 geändert<br>";
                  get ["name", "==!", $namerein], "$db1"; # Nutzerdaten nochmal holen (wegen Neubelegung von anz_anmeld)
                  $zug = 4;
                 }else
                 {
                 $a_debug.=".........\$frei nicht vorh. (Nutzer nicht freigesch.)<br>";
                 $zug = 2;
                 }
              }else
              {
              $a_debug.=".....\$pwrein ungleich $\passwort ($pwrein <> $passwort<br>";
              $zug = 1;
              }
          }
      }elsif ($SID ne "" && $uid ne "" ) # ansonsten wenn SID und uid belegt sind (weitere Aufrufe nach Erstaufruf)
      {
        $a_debug.="SID => $SID und uid => $uid vorhanden<br>";
        get ["Id", "==!", $uid], "$db1"; # Daten für Nutzer mit Id=uid holen und SID vergleichen
        if ($logout == 0)
        {
        $a_debug.="DS mit \$uid $uid geholt, \$logout leer - Prüfung auf SID-Gültigkeit folgt<br>";
        # ........ SIDmax aus n_sid und login_max generieren und mit SIDneu vergleichen  ........ #
        $pt1=index($n_sid, ".");
        $SIDmr = substr($n_sid,$pt1+1);
        $pt2 = index($SIDmr, ".");
        $SID_lmax = substr($n_sid,2,$pt1-2)+$login_max;
        $SID_mmax = substr($n_sid, $pt1+1+2, $pt2+1-2)+$login_max;
        $SID_rmax = substr ($n_sid, $pt2+$pt1+4)+$login_max;
        $SID_max = $adl.$SID_lmax.".".$adm.$SID_mmax.".".$adr.$SID_rmax;
        #
        if ($SID eq $n_sid)
           {$a_debug.="SID und n_id sind gleich (keine Manipulation)<br>";
              if (($SID_lmax > $SID_lneu) || ($SID_mmax > $SID_mneu) || ($SID_rmax > $SID_rneu))
                 { $a_debug.="SID gültig SID => $SID | uid => $uid<br>";
                   $zug = 4;
                 }else
                 { $a_debug.="SID abgelaufen SID => $SID | uid => $uid<br>";
                  $zug = 3;
                  $nick = $name;
                 }
           }else
           {
           $a_debug.="SID nicht gleich n_sid:<br>\$SID => $SID";
           $zug = -1;
           }
        }elsif ($logout == 1)
        {
        $a_debug.="DS mit \$uid $uid geholt, \$logout nicht leer<br>";
        $zug = 5;
        }
      $a_debug.="\$SID mit $SID belegt | Zugangscode \$zug => $zug<br>";
      }
      $a_debug.= "${ \('-'x5) } <b>Ende Block Zugangsberechtigung püfen</b> ${ \('-'x5) }<br>";
      In Abhängigkeit des gesetzten Flags $zug erfolgen dann die weiteren Aktionen, bspw. werden die Statusmeldungen für das jeweilige Anmeldeergebnis in einen Hash geschrieben, dessen Elemente dann einfach in die HTML-Ausgabe eingebaut werden.
      
      Wenn du willst, schick ich dir mal den Code des gesamten Templates per mail, ist recht lang und noch nicht ganz fertig, die Grundfunktionen gehen aber schon
      Gruß
      Ruben

     Antworten


     
 Liste der Einträge von 43801 bis 43951:Einklappen Zur Eingabe 
Neueste Einträge << 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | Neuere Einträge < Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.07s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!