Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP Verschlüsselung

Einklappen

Neue Werbung 2019

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

  • #16
    Naja, aus dem Benutzernamen einen Salt zu generieren ist nicht gerade sinnvoll! Gleicher Benutzername und gleiches Passwort ergeben nähmlich immernoch den gleichen Hash-Wert. Ein Salt soll per Definition die Entropie der Eingabe erhöhen um Wahrscheinlochkeit für Kollisionen zu verringern.

    Ich bin nutze seit kurzem Key-Derivation-Functions[1] und dort eine Implementierung der PBKDF2[2]. Ansonsten kann man auch einen HMAC[3] nutzen und ein wirklich zufälliges Salt als Schlüssel benutzen. Zudem sind diese beiden Artikel[4,5] für dich interessant!

    Sobald du alle diese Artikel gelesen hast, sollten alle deine Fragen beantwortet worden sein!

    [1] Key derivation function - Wikipedia, the free encyclopedia
    [2] PBKDF2 - Wikipedia, the free encyclopedia
    [3] HMAC - Wikipedia, the free encyclopedia
    [4] Key strengthening - Wikipedia, the free encyclopedia
    [5] Password cracking - Wikipedia, the free encyclopedia

    Kommentar


    • #17
      Ich mach das immer so:

      PHP-Code:
      $PW md5(sha1($eingegebenePW)); 

      Kommentar


      • #18
        Mehrfaches hashen erhöht allerdings NICHT die Entropie

        @Sirke: Danke für die Anregungen, sehr hilfreich!
        [IMG]https://g.twimg.com/twitter-bird-16x16.png[/IMG][URL="https://twitter.com/fschmengler"]@fschmengler[/URL] - [IMG]https://i.stack.imgur.com/qh235.png[/IMG][URL="https://stackoverflow.com/users/664108/fschmengler"]@fschmengler[/URL] - [IMG]http://i.imgur.com/ZEqflLv.png[/IMG] [URL="https://github.com/schmengler/"]@schmengler[/URL]
        [URL="http://www.schmengler-se.de/"]PHP Blog[/URL] - [URL="http://www.schmengler-se.de/magento-entwicklung/"]Magento Entwicklung[/URL] - [URL="http://www.css3d.net/"]CSS Ribbon Generator[/URL]

        Kommentar


        • #19
          Beispiel für dynamisches Salt ($dynsalt) und statisches Salt $statsalt

          PHP-Code:
          $statsalt "Elekdronen is was da rumbeld und bumbeld im alden Adom";
          $dynsalt md5(uniqid());

          $sql "INSERT INTO user (user,dynsalt) VALUES ('" mysql_real_escape_string($user) . "','$dynsalt')";
          mysql_query($sql);
          $id mysql_insert_id();

          $passmd5 md5($passwort $dynsalt $statsalt);
          $sql "UPDATE user SET passmd5 = '$passmd5' WHERE id = $id";
          mysql_query($sql); 
          [PHP]if ($var != 0) {
          $var = 0;
          }[/PHP]

          Kommentar


          • #20
            Wobei ich das auslesen als interessanter bzw auch schwieriger empfinde.

            Das geht dann ungefähr so:
            PHP-Code:
            $sql "
            SELECT 
              * 
            FROM 
              user 
            WHERE 
              user = '" 
            mysql_real_escape_string($_GET['user']) . "'
            AND
              passmd5 = MD5(CONCAT('" 
            mysql_real_escape_string($_GET['passwd']) . "', dynsalt, '" $statsalt "'))
            "

            Kommentar


            • #21
              wäre es dann nicht einfacher, den Hashwert PHP-seitig zu berechnen (hash_hmac() bietet sich da an)? zumal dann das Passwort nicht nochmal im Klartext auf die Reise geschickt wird …

              Kommentar


              • #22
                Zitat von draco88
                Wobei ich das auslesen als interessanter bzw auch schwieriger empfinde.

                Das geht dann ungefähr so:
                Besteht nicht die Gefahr dass das Passwort in etwaigen Logs dann direkt in diesem Query angezeigt wird? Ich würde aufjeden Fall keine Abfrage mit dem Passwort als solchem starten.

                Kommentar


                • #23
                  Ansonsten brauchst du nen Query mehr, um erstmal den dynsalt auszulesen und anschließend den Hash zu berechnen.

                  Von der Sicherheit wäre dies mit Sicherheit besser, von der Performance her...wo ich grad drüber nachdenke...Performance is bei nem Login, der eh nur alle Paar minuten aufgerufen wird, eh nicht so wichtig.

                  Kommentar


                  • #24
                    Häh, Sicherheit? Häh, was braucht ne Query mehr? Und warum benutzt Wolla zwei Queries statt einer? Fragen über Fragen..
                    [COLOR="#F5F5FF"]--[/COLOR]
                    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                    [COLOR="#F5F5FF"]
                    --[/COLOR]

                    Kommentar


                    • #25
                      Zitat von draco88
                      Ansonsten brauchst du nen Query mehr, um erstmal den dynsalt auszulesen und anschließend den Hash zu berechnen.

                      Von der Sicherheit wäre dies mit Sicherheit besser, von der Performance her...wo ich grad drüber nachdenke...Performance is bei nem Login, der eh nur alle Paar minuten aufgerufen wird, eh nicht so wichtig.
                      Da hast recht, allerdings ist das auch eines der wenigen Themen bei denen ich (bewusst - kann sich sicherlich auch mal was einschleichen) lieber mehr Queries verwende und dann alles im Skript vergleiche.

                      Kommentar


                      • #26
                        Zitat von nikosch Beitrag anzeigen
                        Häh, Sicherheit? Häh, was braucht ne Query mehr?
                        genau das gleiche habe ich mich auch gefraggt...

                        ob ich vorher den dynsalt auselese und dann mit dem ergebnis eine neue query ausführe, oder ob ich gleich im SQL den string zusammen setze, spielt bei der sicherheit keine rolle.
                        apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                        Kommentar


                        • #27
                          Finde ich schon, da im Query selbst das Passwort in Reinform steht. Deswegen wie auch schon gesagt unschön im Fall von logging etc. Aber das ist Ansichtssache ob der Benutzer des Servers Zugriff auf das Passwort in Reinform haben sollte oder nicht (da er ja auch nach belieben die php Dateien ändern kann). Alles in allem ziehe ich es aber vor dem jeweiligen Benutzer den Zugriff nicht zu ermöglichen. Für mich spielt es eine Rolle.

                          Kommentar


                          • #28
                            Warum brauche ich zwei Queries? Frag ich mich auch grade

                            Als ich dat angefangen hatte zu tippen da wollte ich noch den autoinc-Wert mit als dynamischen Salt verwursteln. So reichts natürlich mit einem Insert.

                            Beim Login reicht auch ein einziger Select: Man holt das gehashte Passwort und den dynsalt ab und berechnet dann aus Eingabe, statsalt und dynsalt das Passwort neu. Dies muss dann mit dem eingelesenen MD5 übereinstimmen.
                            [PHP]if ($var != 0) {
                            $var = 0;
                            }[/PHP]

                            Kommentar


                            • #29
                              Hast recht, das war natürlich quatsch .

                              Kommentar


                              • #30
                                Zitat von Wolla Beitrag anzeigen
                                Beim Login reicht auch ein einziger Select: Man holt das gehashte Passwort und den dynsalt ab und berechnet dann aus Eingabe, statsalt und dynsalt das Passwort neu. Dies muss dann mit dem eingelesenen MD5 übereinstimmen.
                                *kopf->tisch* Warum einfach, wenns auch kompliziert geht

                                Kommentar

                                Lädt...
                                X