[PHP5] sichere Passwörter

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

  • [PHP5] sichere Passwörter

    Hallo Zusammen & Frohes neues Jahr

    weiss jemand wie ich das anstelle, Passwörter auf ihre Sicherheit zu prüfen.

    Skala 0- 10 ->10 soll für beste Sicherheit stehen
    0 -> für unsichere Passwörter

    LG
    derTrallala
    Manchmal verliert ma eben ... und manchmal gewinnen die Anderen

  • #2
    Das ist wohl n bisschen abstrakt fürs PHP-Forum...

    Hast du schon konkrete vorstellungen welche kriterien die PWDs haben sollen?

    Wahrscheinlich ist es mit JS besser realisierbar, weil der user dann nicht immer erst die Seite neu laden muss.

    Also bitte konkreter werden und ansätze liefern. solange schiebe ich erstmal nach BS.

    Kommentar


    • #3
      ein paar Gedanken dazu. Die Überprüfung lauf als Ajax-Anwendung im hintergrund und daher schon zuletzt gepostetes Forum.

      Eure meinung ist gefragt:
      PHP-Code:
      /**
      * prüft die Sicherheit eines Passworts
      * Dabei wird geprüft ob,
      * - Das Passwort eine Mindestlänge erreicht
      * - Das Passwort aus Groß-/Keinbuchstaben, Zahlen und Sonderzeichen besteht
      * - identische Zahlenfolgen enthält (mind.3)
      * - Tastatur-Sequenzen enthält (mind. 3)
      * - Zahlen-Sequenzen enthält (mind. 3)
      * - Alphabet-Elemente enthält (mind. 3)
      * @return int: 0=sehr schlecht, 10=sehr gut
      */
      class passwordhelper
          
      {
          function 
      passwordhelper()
              {
              
      $this->keybordSequences=array
                  (
                  
      "qwe",
                  
      "wer",
                  
      "ert",
                  
      "asd",
                  
      "sdf",
                  
      "dfg",
                  
      "yxc",
                  
      'xcv',
                  
      'cvb',
                  
      'trz',
                  
      'tzu',
                  
      'yui',
                  
      'uio',
                  
      'iop',
                  
      'fgh',
                  
      'ghj',
                  
      'hjk',
                  
      'jkl',
                  
      'vbn',
                  
      'bnm',
                  
      '!"§',
                  
      '"§$',
                  
      '§$%',
                  
      '$%&',
                  
      '%&/',
                  
      '&/(',
                  
      '/()',
                  
      '()=',
                  
      ')=?'
                  
      );

              
      $this->alphabet="abcdefghijklmnopqrstuvqxyz0123456789";
              }

          function 
      checkPasswordSecurity($password$optimalPasswordLength)
              {
              
      //Rating initialisieren
              
      $rating        =10;
              
      $passwordLength=strlen($password);
              
      $smallPassword =strtolower($password); //Zum Vergleich mit Reihen    

              //pro fehlendem Zeichen auf Passwort-Länge: 1 Punkte abziehen
              
      $dif           =$optimalPasswordLength $passwordLength;

              if (
      $dif 0)
                  {
                  
      $rating=$rating - ($dif 1);
                  }


              
      //wenn kein Kleinbuchstaben/Großbuchstaben/Zahlen/Sonderzeichenoder jeweils 2 abziehen
              //besondere Zeichen werden nicht berücksichtigt
              
      $smallChar  =false;
              
      $bigChar    =false;
              
      $numericChar=false;
              
      $specialChar=false;

              for (
      $i=0$i $passwordLength$i++)
                  {
                  
      $ascii ord($password[$i]);

                  if (
      $ascii >= 48 && $ascii <= 57)
                      
      $numericChar=true;

                  elseif (
      $ascii >= 65 && $ascii <= 90)
                      
      $bigChar=true;

                  elseif (
      $ascii >= 97 && $ascii <= 122)
                      
      $smallChar=true;

                  elseif (
      $ascii >= 32 && $ascii <= 126)
                      
      $specialChar=true;
                  }

              if (!
      $smallChar)
                  {
                  
      $rating-=2;
                  }

              if (!
      $bigChar)
                  {
                  
      $rating-=2;
                  }

              if (!
      $numericChar)
                  {
                  
      $rating-=2;
                  }

              if (!
      $specialChar)
                  {
                  
      $rating-=2;
                  }

              
      //identische Zeichenfolgen suchen (ab 3 Buchstaben) => 2 Punkte abziehen
              
      for ($i=0$i <= $passwordLength 3$i++)
                  {
                  
      $excerpt substr($smallPassword$i3);

                  if (
      $excerpt[0] == $excerpt[1] && $excerpt[1] == $excerpt[2])
                      {
                      
      $rating-=2;
                      break;
                      }
                  }

              
      //Zeichenfolgen auf der Tastatur (ab 3 Buchstaben) => 2 Punkte abziehen
              
      foreach ($this->keybordSequences as $sequence)
                  {
                  if (
      strstr($smallPassword$sequence))
                      {
                      
      $rating-=2;
                      break;
                      }
                  }

              
      //ABC oder Zahlenreihen (ab 3 Buchstaben) => 2 Punkte abziehen
              
      for ($i=0$i <= $passwordLength 3$i++)
                  {
                  
      $excerpt substr($smallPassword$i3);

                  if (
      strstr($this->alphabet$excerpt))
                      {
                      
      $rating-=2;
                      break;
                      }
                  }

              return (
      $rating 0) ? $rating 0;
              }
          } 
      Manchmal verliert ma eben ... und manchmal gewinnen die Anderen

      Kommentar


      • #4
        hi,

        du könntest noch einen abgleich gegen eine liste mit meistbenutzten passworten durchführen.

        außerdem sollte das passwort noch im kontext betrachtet werden, also ob z.b. der benutzername im passwort enthalten ist. oder auch der geburtstag, falls bei der registrierung anzugeben ... usw.

        Kommentar


        • #5
          Hi, Danke,

          werde es demnächst integrieren ... bin aber mit dem bisherigen durchaus zufrieden.

          Allerdings stellt sich mir die Frage, was die meist verwendeten Passwörter sind.

          Aber der Kontextabgleich scheint mir integrationswürdig.

          LG
          tt
          Manchmal verliert ma eben ... und manchmal gewinnen die Anderen

          Kommentar


          • #6
            Original geschrieben von Timo Trallala
            Allerdings stellt sich mir die Frage, was die meist verwendeten Passwörter sind.
            z.b.: http://www.outpost9.com/files/WordLists.html -> common-passwords.zip
            der link ist von: Wikipedia - Wörterbuchangriff

            und sicherlich gibt es auch passwortlisten, die außerdem auch deutsche passwörter enthalten.
            Zuletzt geändert von 3DMax; 03.01.2007, 20:26.

            Kommentar

            Lädt...
            X