Cryptic Sven: Datenbankabfrage um ähnlichkeiten zu vermeiden

Hallo alle,

ich hänge gedanklich mal wieder etwas fest. Ich habe ein Registrierungsformular und möchte nun prüfen ob der name nicht in der Datenbank bereits vergeben ist. Eine Abfrage bekomme ich problemlos hin jedoch möchte ich es nun noch etwas genauer haben. Denn es kann ja sein das sich eine Paula mit dem Usernamen PaUlA angemeldet hat und nun möchte sich eine andere Paula mit dem Usernamen Paula anmelden. Mit der einfachen abfrage die ich hinbekommen habe wird leider nur nach Paula gesucht jedoch findet meine einfache Abfrage die PaUlA nicht. Mein gedanke war nun die Namen aus der DB auszulesen und komplett in kleinbuchstaben ausgeben und vom Formular den Namen auch in kleinbuchstaben ausgeben. Soweit alles gut aber nun hänge ich gerade etwas fest. Hier mal der Wichtige Teil des Codes :

<?php
...
	}elseif(isset($_POST['registrierung'])){
		// Registrierung
			$sql = "SELECT name FROM user";
			$sqlnamecheck = $db->query($sql);
			while($snc = $sqlnamecheck->fetch_assoc()){
				$sqluser=strtolower($snc['name']);
				if($sqluser == strtolower($_POST['reguser'])){
					echo'Der Name '.$snc['name'].' existiert schon';
				}
			}
		if($_POST['reguser']=="" || $_POST['regpw1']=="" || $_POST['regmail']==""){
			echo'Es müßen schon alle Felder ausgefüllt werden!';
		}elseif($_POST['regpw1'] != $_POST['regpw2']){
			echo'Beide Passwörter stimmen nicht überein!';
		}else{
			$sql = "INSERT INTO user (id, name, password, email, sessionid) VALUES (NULL, '$reguser', '$regpw', '$regmail', '$regsession')";
			if(mysqli_query($db, $sql)){
				echo'Danke für deine Registrierung<br/>';
			}else{
				echo'Da ist wohl was schief gelaufen';
			}
		}
	}
}
...
?>

Mit dem hier vorhandenen Code wird geprüft ob der Name schon existiert aber da ich zu beginn danach frage wird zwar der Name gefunden aber unten bei Insert Into dennoch der neue Name in die DB gespeichert. Ich dachte mir das ich eventuell in der While-Schleife prüfe und wenn der Name nicht existiert wird er in die Datenbank eingetragen. Die Prüfung ist klar aber wenn ich das so abändere das das Insert Into oben in der While-Schleife steckt würde bei einer Abfrage von 10 Usern die nicht übereinstimmern teoretisch doch 10mal ein Insert Into ausgeführt oder sehe ich das falsch?

Wie kann ich also die DB abfragen und wenn alle bereits vorhanden Usernamen geprüft wurden ein neuer User angelegt wird sofern keine Ähnlichkeiten vorhanden sind?

Oder soll ich die Prüfung weglassen und auch eine Paula zulassen selbst wenn es bereits eine PaUlA in der DB gibt? Was meint ihr?

LG Cryptic Sven

--
Was du heute kannst besorgen, das schaffste auch noch morgen!
  1. Tach!

    Ich habe ein Registrierungsformular und möchte nun prüfen ob der name nicht in der Datenbank bereits vergeben ist.

    Das macht man üblicherweise nicht so, denn zwischen Prüfung und Eintragung kann ein anderer Prozess bereits geschrieben haben.

    Stattdessen legt man auf das Datenbankfeld einen Unique-Index und versucht ein ganz normales INSERT. Man muss aber darauf gefasst sein, dass ein zu einem Unique-Constraint-Fehler kommen kann. Das ist dann der Fall, dass der Name bereits existiert.

    Datenbankfelder haben eine Collation-Eigenschaft. Wenn man da eine case-insensitive wählt - falls das noch nicht der Fall sein sollte - dann lassen sich da auch keine gleichen Werte mit unteschiedlicher Groß-Klein-Schreibung eintragen.

    dedlfix.

    1. Hi,

      Datenbankfelder haben eine Collation-Eigenschaft. Wenn man da eine case-insensitive wählt - falls das noch nicht der Fall sein sollte - dann lassen sich da auch keine gleichen Werte mit unteschiedlicher Groß-Klein-Schreibung eintragen.

      Aber damit erwischt man nicht so fiese Fälle wie 'РΑULΑ'

      (Kyrillisch-Griechisch-Lateinisch-Gemischt)

      cu,
      Andreas a/k/a MudGuard

    2. Hallo dedlfix,

      Vielen Dank, aber nach einer kleinen Pause und nochmaligen Betrachtens meines Vorhabens werde ich verschiedene Schreibweisen doch zulassen. Es wäre allen nachfolgenden Paulas nicht gerecht das sie ihren Namen nicht nutzen können nur weil es bereits eine Paula gibt. Daher werde ich die DB nur nach genauer Schreibweise einer Prüfung unterziehen so das keine exakt User mit exakt gleicher Schreibweise existieren können. Ich habe vorhin fast 3 Std. an dem Gedanken gesessen so das ich jetzt gar nicht mehr weiß warum ich eine ähnliche Schreibweise unterbinden wollte. Aber dennoch vielen lieben dank

      P.S.: Könnte man diesen Thread eventuell irgendwie löschen da eine Lösung nicht mehr nötig ist?

      LG Cryptic Sven

      --
      Was du heute kannst besorgen, das schaffste auch noch morgen!
      1. Liebe(r) Cryptic,

        Vielen Dank, aber nach einer kleinen Pause und nochmaligen Betrachtens meines Vorhabens werde ich verschiedene Schreibweisen doch zulassen.

        wenn eine Applikation bei Benutzernamen einen Unterschied in der Groß-/Kleinschreibung sieht, dann ist das für mich ein großer Fehler. Benutzernamen sollten immer und ohne Ausnahme case-insensitive sein.

        Um das in der DB so anzulegen, braucht es eine Kollation auf die Spalte des Benutzernames, die auf _ci endet, sowie einen Schlüssel, der uniqueness erfordert.

        Es wäre allen nachfolgenden Paulas nicht gerecht das sie ihren Namen nicht nutzen können nur weil es bereits eine Paula gibt.

        Die Welt ist echt ein Jammertal...

        P.S.: Könnte man diesen Thread eventuell irgendwie löschen da eine Lösung nicht mehr nötig ist?

        Mit welchem Recht möchtest Du anderen verweigern, dass sie aus dieser Diskussion etwas lernen? Die Kommentare, die Dich weitergebracht haben, hast Du in keiner Weise vergütet, als dass Du darauf einen Alleinanspruch geltend machen könntest!

        Liebe Grüße

        Felix Riesterer

        1. Hallo Felix,

          Benutzernamen sollten immer und ohne Ausnahme case-insensitive sein.

          Also soll grundsätzlich die Groß-Kleinschreibung ignoriert werden und somit darf es nur eine paula geben egal wie sie geschrieben wurde?

          Mit welchem Recht möchtest Du anderen verweigern, dass sie aus dieser Diskussion etwas lernen? Die Kommentare, die Dich weitergebracht haben, hast Du in keiner Weise vergütet, als dass Du darauf einen Alleinanspruch geltend machen könntest!

          WOW bleib mal geschmeidig. Ich hab doch nur gefragt und als ich meine Frage schrieb gab es nur die Antwort von dedlfix. Ich wußte ja nicht das man gleich gehängt, geköpft und gevierteilt wird wenn man mal nachfragt. Soviel zum Thema Die Welt ist ein Jammertal Klar habe ich nicht das Recht anderen zu verweigern das sie etwas hierraus lernen aber Gegenfrage Wer gibt mir das Recht das ich nur einer Paula erlaube das sie ihren Namen nutzen darf und alle anderen nicht

          LG Cryptic Sven

          --
          Was du heute kannst besorgen, das schaffste auch noch morgen!
          1. Hallo Cryptic,

            Wer gibt mir das Recht das ich nur einer Paula erlaube das sie ihren Namen nutzen darf

            Danach fragt mein EMail-Provider auch nicht. Wenn ich die Mailadresse angela.merkel@web.de registrieren will (nicht probiert) und unsere BABuKa (Bald-Alt-Bundeskanzlerin) vor mir da war, dann krieg ich die Adresse nicht. Punkt.

            Computer haben die lästige Eigenschaft, eindeutige Schlüssel zu verlangen. Wenn Du "Paula" als Name mehrfach zulassen willst, dann darfst Du den Username nicht als Login-Schlüssel verwenden. Denn wie willst Du sonst den Konflikt zwischen paula.x@web.de, paula.y@gmx.de, Paul.A.Dingsmann@example.org und peter.aula@example.net lösen, die alle vier und mit gutem Recht als Username paula haben wollen? Hinzu kommt: Wenn das eine Seite ist, wo die Benutzer Dinge veröffentlichen können - wer blickt noch durch, wenn da 4 Beiträge von paula, Paula, PaulA und PAula stehen? Von den Gemeinheiten der verwechselbaren Unicode-Glyphen, die Mudguard ansprach, will ich gar nicht erst reden. Da gibt's eine ganze Branche, die das für Fake-URL ausnutzt.

            Ich persönlich finde einen Login, der case sensitive ist, auch nicht benutzerfreundlich. Man vergisst das schon mal, und dann wird's chaotisch (das Selfwiki hatte einen Rolf B und einen Rolf b, einer von beiden war ein Irrtum von mir, weil ich dachte, ich hätte noch keine User-ID).

            Ich wußte ja nicht das man gleich gehängt, geköpft und gevierteilt wird wenn man mal nachfragt.

            Deine eigene Geschmeidigkeit lässt auch etwas zu wünschen übrig. Felix hat sich mit dem von Dir zitierten Passus gegen deinen Löschwunsch ausgesprochen, nicht gegen die Nachfrage.

            Das Jammertal bezieht sich meiner Auffassung darauf, dass Du ein Problem lösen willst, das Du nicht lösen musst. D.h. Du machst es Dir unnötig schwer. Nach meiner Auffassung gibt es kein Recht auf eine freie Wahl des Username. Da gilt das Windhundprinzip. Bei einem Domain-Name kann ich als eine Schmitz AG vermutlich erfolgreich gegen den Privatmann Josef Schmitz klagen, der die Domain schmitz.com hält. Bei Vanity URLs auf Facebook kann sowas vielleicht auch passieren. Aber bei "normalen" Benutzernamen? Ich denke nicht.

            Es gibt auch kein Recht darauf, dass Benutzer mit einem vom Usernamen abweichenden Klarnamen dargestellt werden. Das ist in vielen Foren eine Option, aber weder Recht noch Pflicht. Im Gegenteil, viele User wollen den Klarnamen gar nicht.

            Wenn meine Auffassung falsch ist und es tatsächlich ein Anrecht gibt, lasse ich mich gerne durch reputable Quellen eines Besseren belehren.

            Rolf

            --
            sumpsi - posui - obstruxi
            1. Hallo,

              Wer gibt mir das Recht das ich nur einer Paula erlaube das sie ihren Namen nutzen darf

              Danach fragt mein EMail-Provider auch nicht. Wenn ich die Mailadresse angela.merkel@web.de registrieren will (nicht probiert) und unsere BABuKa (Bald-Alt-Bundeskanzlerin) vor mir da war, dann krieg ich die Adresse nicht. Punkt.

              das ist aber ein schlechtes Beispiel. Denn soweit ich mich erinnere, überlässt es die Spezifikation für e-Mails (RFC 822 und alle Nachfolger) dem Betreiber eines Mailservers, ob er beim Local-Part von Mailadressen Groß- und Kleinschreibung unterscheiden will oder nicht. Beim Domain-Part ist dagegen im DNS festgelegt, dass er case-insensitive ist.

              Ich habe aber in freier Wildbahn noch keinen e-Mail-Provider angetroffen, der wirklich zwischen paula@example.org und Paula@example.org unterscheidet.

              Computer haben die lästige Eigenschaft, eindeutige Schlüssel zu verlangen.

              Eine Möglichkeit, das zu erreichen, ist das feste Beharren auf exakten Benutzernamen oder Mailadressen. Einschließlich der Groß- und Kleinschreibung.

              Wenn Du "Paula" als Name mehrfach zulassen willst, dann darfst Du den Username nicht als Login-Schlüssel verwenden.

              Das ist eine andere Möglichkeit: Dann muss man halt Usernamen (eindeutig) und Realnamen (kann mehrdeutig sein) getrennt vorhalten.

              Ich persönlich finde einen Login, der case sensitive ist, auch nicht benutzerfreundlich.

              ACK. Und sehr ungewöhnlich.

              Nur fürs Protokoll: Kennwörter sollten abweichend davon immer exakt eingefordert werden. Wenn ich also einmal Pluto17 als Kennwort festgelegt habe, darf ich mich mit pluto17 nicht anmelden können.

              May the Schwartz be with you
               Martin

              --
              Theorie ist, wenn eigentlich jeder weiß, wie's gehen müsste, und es geht doch nicht.
              Praxis ist, wenn's geht, obwohl es keiner so richtig versteht.
              Bei uns sind Theorie und Praxis vereint: Nichts geht, und keiner weiß, warum.
              1. Hallo Martin,

                da hätten wir dann schon drei Daten:

                • Anmeldenamen
                • BenutzerInnenname
                • Realnamen

                Die sollte man immer hübsch auseinanderhalten.

                Spalten für Anmeldenamen und Passwort sollten Binary (aka case sensitive) vorgehalten werden. Das wurd beim Passwort auch schon oft vergessen.

                LG
                Ralf

                1. Hallo,

                  da hätten wir dann schon drei Daten:

                  • Anmeldenamen
                  • BenutzerInnenname

                  da verstehe ich den Unterschied nicht. Der Anmeldename ist in meiner Wahrnehmung der Benutzername. Falls du das anders siehst, gib mir ein Gegenbeispiel.

                  Spalten für Anmeldenamen und Passwort sollten Binary (aka case sensitive) vorgehalten werden. Das wurd beim Passwort auch schon oft vergessen.

                  Es ist ja schon schlimm genug, dass einige Portale beim Kennwort nur Buchstaben, Ziffern und ein paar wenige Interpunktionszeichen aus dem ASCII-Zeichenvorrat zulassen.

                  May the Schwartz be with you
                   Martin

                  --
                  Ein Student ist im Begriff, sich in der Mensa zu einem Professor an den Tisch zu setzen.
                  Professor: Seit wann essen denn Adler und Schwein an einem Tisch?
                  Student: Okay, dann flieg' ich halt einen Tisch weiter.
                  1. siehe anderes Posting

                    • Zur Anmeldung werden verdeckt Anmeldename und Passwort benötigt
                    • Angezeigt wird dann der BenutzerInnenname (Nickname)
                    • Der Klartextname und weitere persönliche Daten weden nur autorisierten Nutzern angezeigt

                    Noch Fragen?

            2. Hallo Rolf,

              leider werden immer noch Anmeldename und BenutzerInnenname verwechselt. Das ist Kindergarteninformatik!

              Die beiden sollten nichts miteinander zu tun haben!

              LG
              Ralf

              1. Hallo Ralf,

                das sind aber nur wenige Systeme, die das sauber trennen. Unser Forum oder das Wiki beispielsweise nicht. Und viele "professionelle Systeme", mit denen ich arbeite, auch nicht.

                Rolf

                --
                sumpsi - posui - obstruxi
                1. Hallo Rolf,

                  das sind aber nur wenige Systeme, die das sauber trennen. Unser Forum oder das Wiki beispielsweise nicht. Und viele "professionelle Systeme", mit denen ich arbeite, auch nicht.

                  Stimmt leider.
                  Und wenn sie es trennen, ermöglichen sie meisten noch nicht die verdeckte Eingabe des Anmeldenamens (wie bei Passworten).

                  Dabei wäre die konsequente Geheimhaltung beider Credentials doch so einfach und ein echter Sicherheitsgewinn.

                  An meinen Haustürschlüssel mache ich doch tunlichst auch kein Schild mit meiner Adresse, sondern besser eins mit "bitte abgeben beim Polizeirevier oder Fundbüro xyz unter Kennzahl 358139". Den Service gibts aber noch nicht ;-)

                  Aber wenn dann mit Hilfe meines gefundenen Schlüssels eingebrochen wird, wird es aller Wahrscheinlichkeit nach jemand vom Polizeirevier/Fundbüro gewesen sein :-O

                  LG
                  Ralf

                  1. Lieber Ralf,

                    Dabei wäre die konsequente Geheimhaltung beider Credentials doch so einfach und ein echter Sicherheitsgewinn.

                    ja, aber: Benutzer sind Menschen. Es ist eine Abwägungssache, ob die verminderte Nutzerfreundlichkeit den Sicherheitsgewinn im Verhältnis rechtfertigt.

                    Was technische Machbarkeit angeht, bin ich völlig bei Dir. Password peeker finde ich heutzutage ein Muss. Das kann man auf identische Weise beim Anmeldenamen handhaben.

                    Liebe Grüße

                    Felix Riesterer

        2. Hallo Felix,

          Anmeldenamen sollten nichts mit den BenutzerInnennamen zu tun haben!

          ich sehe keinen Grund dafür, warum Anmeldenamen nicht case sensitive sein dürften. Und bei UTF-8 als Codierung der Datenbank und aller übrigen beteiligten Teile wären ja auch andere nicht "europäische" Zeichen möglich.

          Anmeldenamen sollten aber genauso verdeckt eingegeben werden können, wie Passwörter (input type=password). Somit wäre Missbrauch erheblich eingeschränkt. Beispiel: ich kann sehen, wie dein Anmeldename bei deiner Banking-Software lautet. Wenn ich Dich jetzt ärgern will, versuche ich xmal, mich damit anzumelden. Weil ich aber dein PW nicht kenne, wird dein Account bei der Bank gesperrt und Du kannst 24 Std. kein Onlinebanking mehr machen. Doof, oder?

          Angezeigt werden sollte dann nur der BenutzerInnenname. Und der sollte irgendwie lesbar sein, zumindest für die LeutInnen, für die die Schriftzeichen etwas bedeuten ;-p

          LG
          Ralf

          1. Lieber Ralf,

            Anmeldenamen sollten nichts mit den BenutzerInnennamen zu tun haben!

            meinst Du mit Anmeldenamen login name? Also das, was bei der Kombi aus Benutzernamen und Passwort einzugeben ist? Der von Dir genannte BenutzerInnenname ist dann wohl der Klarname oder volle Name? Dann würde ich Dir widersprechen. Wenn aber nicht, sehe ich für einen Anmeldenamen keinen Anwendungsfall.

            Liebe Grüße

            Felix Riesterer

            1. Hallo Felix,

              In vielen Systemen werden Anmelde- und Benutzername gleichgesetzt. Ralf führt aus, dass das eine Securityschwäche ist. Damit hat er recht.

              Bei carcassonne-online hatten wir ein phpBB-Forum mit öffentlicher Mitgliederliste. Die hat ein Hacker abgegriffen und dann mit einer Passwort-DB Passworte durchprobiert. Wir hatten einen Mod drin, der nach 3 Fehlversuchen den User sperrt, d.h. die Leute fingen an zu maulen, dass sie ständig gegen Login blockiert wären und einen Passwort-Reset anfordern müssten. Das Hackerscript war dumm und hat einfach blind auf die login-Seite POSTs abgesetzt, so konnten wir es mit einem einfachen Einmaltoken aushebeln, aber das Problem ist genau da: Wenn die Namen der Benutzer, die ich im System sehe, auch die Anmeldeschlüssel sind, kann ich anfangen, gezielt Passworte zu raten. Kenne ich die Anmeldeschlüssel nicht, muss ich beides raten.

              Die Frage ist nur: Wie schwach ist die Schwäche. Für welche Systeme ist eine Trennung von User- und Loginname eine notwendige Anforderung? Für mein Onlinebanking: Definitiv. Da sind die Login-Begriffe so stark eingeschränkt, dass es eine Schande ist. Für unser Forum hier? Och nö… Für mein Windows zu Hause: Besser wär's, aber der merkt sich ja sogar meinen letzten Loginname. Das tut das Windows im Büro immerhin nicht, aber Windows setzt Username und Loginname gleich, d.h. ich finde im Taskmanager eines Servers oder in Änderungshistorien genügend Loginnamen. Schlau ist es nicht unbedingt…

              Rolf

              --
              sumpsi - posui - obstruxi
      2. so das ich jetzt gar nicht mehr weiß warum ich eine ähnliche Schreibweise unterbinden wollte

        Vielleicht weil Aussagen der Art "Auf den Kommentar X von Paula hat paula Y geschrieben, woraufhin pAuLa Z geschrieben hat" ziemlich chaotisch werden können.

        1. Hallo Alle,

          Das mit dem Löschen war eine Frage daher auch das Fragezeichen am Ende des Satzes (hab ich in der Schule mal so gelernt vor über 20 Jahren). Aber scheiß drauf, Fragen sind wohl unerwünscht schade dachte darum geht es in einem Forum. Wird zeit das ich hier meine Koffer packe und weiter ziehe.

          Na gut widdmen wir uns mal dem worum es ursprünglich eigentlich ging. Ich habe nun den Benutzernamen als Unique festgehalten in der DB (hoffe das ich so richtig verstanden habe) so das es nur einen Nutzernamen gibt. Ich hatte gestern nur das Problem das sogar ein exakt gleich geschriebener Username in die DB gespeichert wurde und eine abfrage mit WHERE name = $_POST['blabla'] nicht funktioniert hat es wurde ab der Zeile immer abgebrochen obwohl ich es genauso schon bei der Navigation gemacht habe und wunderbar funktionierte. Somit kann ich bei der Registrierung ja mit strtolower problemlos prüfen ob der Name schon vergeben ist oder nicht. Ein Problem das in der Zeit der abfrage ein anderer User den Namen gerade nimmt kann ich mir nicht vorstellen denn meine Seite wird ja nicht von ü10000 Usern in der Sekunde besucht.

          Leider hat sich ein neuer Fehler eingeschlichen um den ich mich erstmal kümmern muß. Um mehr sicherheit zu gewähren habe ich bei der Registrierung das PW mit Password_hash verschlüsselt in die DB übergeben jedoch kann ich nun beim Login nicht mehr prüfen ob das PW auch stimmt da ich ja das in dem Login eingegebene PW auch wieder verschlüßeln müßte um eine Abfrage zu starten was aber immer FALSE ausgeben wird da ja der Hash nicht doppelt existieren kann.

          Achja Programmieren ist schon lustig ... es wird einem nie langweilig XD

          LG Cryptic Sven

          --
          Was du heute kannst besorgen, das schaffste auch noch morgen!
          1. Hallo Cryptic,

            Achja Programmieren ist schon lustig

            Wenn die Zeilen, über die du klagst, genau so aussehen wie Du sie hier hinschreibst, ist das alles andere als lustig. Wenn der nächste Absatz für Dich redundant ist, dann ignoriere ihn…

            Ein SQL_Fragment WHERE name = $_POST['blabla'] funktioniert nicht, weil man beim String-Parsing (oder Variable-Parsing) einen Array-Schlüssel nicht in Anführungszeichen setzen darf, Doku hier. Wenn überhaupt, müsste es WHERE name = $_POST[blabla] sein. Aber auch das darf es nicht sein, weil man vom User empfangene Daten nicht blindlings in ein SQL einsetzen darf. Man muss den Kontextwechsel beachten und entsprechende Maskierungsfunktionen benutzen (mysqli_real_escape_string oder die quote-Methode in PDO), oder prepared statements (in MYSQLI, in PDO) verwenden.

            Password_hash ... da ja der Hash nicht doppelt existieren kann

            Kommt drauf an - wenn Du das Salt manuell vorgibst, schon. Aber das ist nicht Sinn der Sache, ein zufälliges Salt ist sicherer.

            Die Lösung sieht anders aus: Man erstellt den Hash mit password_hash und überprüft ihn mit password_verify

            Rolf

            --
            sumpsi - posui - obstruxi
          2. Lieber Cryptic,

            Das mit dem Löschen war eine Frage daher auch das Fragezeichen am Ende des Satzes (hab ich in der Schule mal so gelernt vor über 20 Jahren). Aber scheiß drauf, Fragen sind wohl unerwünscht schade dachte darum geht es in einem Forum. Wird zeit das ich hier meine Koffer packe und weiter ziehe.

            nicht gut. Lass mal die Emotionen in der Garderobe. Wir sind hier ein Technikforum. Da kann es ganz schnell sein, dass man Dir sagt, was Du von der emotionalen Seite lieber nicht hören willst. Da braucht es dann Ruhe und Geduld, um sich der eigentlichen Sache zu besinnen und die Kommentare und Hinweise für die Sache zu studieren und daraus zu lernen.

            Dass man sich hier grundsätzlich auch wie die Axt im Walde aufführen kann, ist klar. Was man damit erreicht, meistens auch.

            Leider hat sich ein neuer Fehler eingeschlichen um den ich mich erstmal kümmern muß. Um mehr sicherheit zu gewähren habe ich bei der Registrierung das PW mit Password_hash verschlüsselt in die DB übergeben

            Das ist ein absolutes Muss, eine Minimalanforderung an Datensicherheit! Im Klartext hinterlegte Passwörter sind eine eigentlich unentschuldbare Versäumnis. Und ja, man kann damit argumentieren, dass man nur an einem kleinen Projekt herumbastelt, bei dem es nicht so sehr darauf ankäme. Aber das ist in aller Regel zu kurz gedacht, weil man als Laie unmöglich die volle Tragweite für solche Entscheidungen abschätzen oder begreifen kann. Dafür gibt es ja solche Dogmen, die man sich tunlichst verinnerlichen sollte.

            WHERE name = $_POST['blabla']

            „Über eine Website mit einer vulnerablen Joomla-Installation auf einen Server gelangt, gibt es kein Durchkommen zu Attilas Webspace mit der Kundennummer 5000120334. Attilas Seite war zunächst sicher. Also anfangs.“ - anonleaks.net

            jedoch kann ich nun beim Login nicht mehr prüfen ob das PW auch stimmt da ich ja das in dem Login eingegebene PW auch wieder verschlüßeln müßte um eine Abfrage zu starten was aber immer FALSE ausgeben wird da ja der Hash nicht doppelt existieren kann.

            @Rolf B hat Dir den Tipp mit password_verify() ja schon gegeben.

            Achja Programmieren ist schon lustig ... es wird einem nie langweilig XD

            Ganz richtig. Drum machen wir das ja auch so gerne, obwohl es dermaßen Lebenszeit fressen kann. :-)

            Liebe Grüße

            Felix Riesterer

            1. Das ist ein absolutes Muss, eine Minimalanforderung an Datensicherheit! Im Klartext hinterlegte Passwörter sind eine eigentlich unentschuldbare Versäumnis. Und ja, man kann damit argumentieren, dass man nur an einem kleinen Projekt herumbastelt, bei dem es nicht so sehr darauf ankäme. Aber das ist in aller Regel zu kurz gedacht, weil man als Laie unmöglich die volle Tragweite für solche Entscheidungen abschätzen oder begreifen kann. Dafür gibt es ja solche Dogmen, die man sich tunlichst verinnerlichen sollte.

              Im konkreten Fall geht es um den Eigenbau eines ausgewachsenen Shops. Die Verantwortung schlägt hier also mit voller Wucht durch. No excuses allowed.

              1. Hallo Mitleser,

                er allowed sich doch gar keine excuse und verwendet brav password_hash. Er hat das Handbuch nur nicht ganz zu Ende gelesen, wo der Hinweis auf password_verify steht...

                Achja Programmieren ist schon lustig ... es wird einem nie langweilig XD

                Mit Computern lösen wir Probleme, die wir ohne sie gar nicht hätten 🤣

                Rolf

                --
                sumpsi - posui - obstruxi
                1. Hallo,

                  Mit Computern lösen wir Probleme, die wir ohne sie gar nicht hätten 🤣

                  genau! Entschuldigung einer Büroangestellten[1]: Wir haben umgestellt. Wir machen das jetzt per Computer. Das geht viel schneller, es dauert nur länger.

                  May the Schwartz be with you
                   Martin

                  --
                  Theorie ist, wenn eigentlich jeder weiß, wie's gehen müsste, und es geht doch nicht.
                  Praxis ist, wenn's geht, obwohl es keiner so richtig versteht.
                  Bei uns sind Theorie und Praxis vereint: Nichts geht, und keiner weiß, warum.

                  1. früher despektierlich Tippse genannt ↩︎

                  1. früher despektierlich Tippse genannt

                    Stimmt! Heute müsste man/fra "Tippse oder Tippser" sagen.

                    *scnr*

                    1. Hallo Ralf,

                      Tippse:r

                      Rolf

                      --
                      sumpsi - posui - obstruxi
        2. so das ich jetzt gar nicht mehr weiß warum ich eine ähnliche Schreibweise unterbinden wollte

          Vielleicht weil Aussagen der Art "Auf den Kommentar X von Paula hat paula Y geschrieben, woraufhin pAuLa Z geschrieben hat" ziemlich chaotisch werden können.

          Und vor allem auch, weil auf kurz oder lang irgendwelche Trolls sich einen Spaß daraus machen werden, genau in diese Lücke hinein zu stoßen.