Michaela: MySQL: bei "where" auf Kleinschreibung prüfen

Hallo,

ich überprüfe eine Formulareingabe in einer MySQl-Abfrage mit

...
 WHERE
     aos_aerzte.name = '".$_POST["user"]."'
     AND aos_aerzte.pass = '".$_POST["pass"]."'
...

Allerdings wird dabei nicht auf Groß-/Kleinschreibung überprüft.
Wie kann ich das in der MySQL-Abfrage realisieren?
Danke für Eure Hilfe und 1000 Grüße,

Eure Micha

  1. Hallo,

    Allerdings wird dabei nicht auf Groß-/Kleinschreibung überprüft.
    Wie kann ich das in der MySQL-Abfrage realisieren?

    http://dev.mysql.com/doc/mysql/en/Case_Sensitivity_Operators.html

    viele Grüße

    Axel

    1. Hi Axel,

      habs so probiert

      $query = "
       SELECT BINARY
           tt.a,
           tt.b,
           tt.name,
           tt.c,
           tt.d,
           tt.pass
       FROM
           aos_aerzte
       WHERE
           tt.name = '".$_POST["user"]."'
           AND tt.pass = '".$_POST["pass"]."'
       ";

      ... und mit dem aktuellen XAMP getestet ... leider klappts nicht.
      Was mache ich falsch?

      LG, Micha

      1. Hallo,

        habs so probiert

        $query = "
         SELECT BINARY
             tt.a,
             tt.b,
             tt.name,
             tt.c,
             tt.d,
             tt.pass
         FROM
             aos_aerzte
         WHERE
             tt.name = '".$_POST["user"]."'
             AND tt.pass = '".$_POST["pass"]."'
         ";
        Was mache ich falsch?

        ...
        The BINARY operator casts the string following it to a binary string.
        ...
        BINARY ist ein Operator. Er wandelt einen nachfolgenden String in einen Binary-String, der dann case-sensitive ist. Dass der Operator im Beispiel direkt nach SELECT steht, ist Zufall.

        ... WHERE BINARY tt.name = 'Müller' AND BINARY tt.pass = 'Kennwort'

        viele Grüße

        Axel

        1. Lieber Axel,

          es klappt prima. Vielen, vielen Dank und einen schönen Tag :-)

          Micha

  2. Hallo Michaela,

    ich überprüfe eine Formulareingabe in einer MySQl-Abfrage mit

    ...
    WHERE
         aos_aerzte.name = '".$_POST["user"]."'
         AND aos_aerzte.pass = '".$_POST["pass"]."'
    ...

    bist Du Dir im klaren darüber, was passiert, wenn ein user als Name folgendes angibt:

    ich_bin_ein_gangster';delete * from aos_aerzte;...

    Ich bin natürlich davon ausgegangen, dass Du den Usernamen nicht schon auf den Client durch JavaScript auf unzulässige Zeichen geprüft hast, das würde Dir auch bei Böswilligen nichts nützen. Stichwort: Seite nachbauen und Form von da abschicken.

    1. Hallo,

      Ich bin natürlich davon ausgegangen, dass Du den Usernamen nicht schon auf den Client durch JavaScript auf unzulässige Zeichen geprüft hast, das würde Dir auch bei Böswilligen nichts nützen. Stichwort: Seite nachbauen und Form von da abschicken.

      Also ich brauche nur 2 Klicks, um Javascript zu deaktivieren. Der Formularnachbau ist damit eigentlich überflüssig ...

      mfg,
        Philip

      1. ... deswegen auch die Überprüfung auf dem Server !!
        Michaela

        1. Hi,

          ... deswegen auch die Überprüfung auf dem Server !!
          Michaela

          aber unbedingt alle unerlaubten Zeichen ausfiltern!
          Ansonsten schau Dir mal die Funktionen LOWER() und UPPER() an.

          cu, ziegenmelker

          1. Schon klar,

            gehe den Weg umgekehrt - lasse nur [a-z], [A-Z], und [0-9] zu ...

            Gruss, Micha

      2. Hallo,

        Also ich brauche nur 2 Klicks, um Javascript zu deaktivieren. Der Formularnachbau ist damit eigentlich überflüssig ...

        toll, ich brauche nur einen Klick, bin ich jetzt besser? ;-)
        Ich denke Du hast mich falsch verstanden, ich sage ja gerade dass eine Validierung _auch_ mit eingeschaltetem JS nichts nützt (Seitennachbau).
        Und immerhin würde man ja das Absenden des Formulars nach einer Validierung ja auch mit JS machen.

        cu, ziegenmelker

        1. Hallo,

          toll, ich brauche nur einen Klick, bin ich jetzt besser? ;-)

          ja, bist du ;)

          Ich denke Du hast mich falsch verstanden, ich sage ja gerade dass eine Validierung _auch_ mit eingeschaltetem JS nichts nützt (Seitennachbau).

          Hab ich schon so verstanden. Ich wollte nur klarmachen, dass man nicht erst den umständlicheren Weg über ein Formularnachbau gehen muss, um solche Pseudo-Prüfungen zu auszuhebeln ...

          cu, ziegenmelker

          mfg,
            Philip

          1. Hello,

            toll, ich brauche nur einen Klick, bin ich jetzt besser? ;-)
            ja, bist du ;)
            Ich denke Du hast mich falsch verstanden, ich sage ja gerade dass eine Validierung _auch_ mit eingeschaltetem JS nichts nützt (Seitennachbau).
            Hab ich schon so verstanden. Ich wollte nur klarmachen, dass man nicht erst den umständlicheren Weg über ein Formularnachbau gehen muss, um solche Pseudo-Prüfungen zu auszuhebeln ...

            Wie schickst Du denn ein mit JavaScript positiv geprüftes Formular ab, wenn Du JS ausschaltest? Aber bitte, ohne es nachzubauen!

            Nun bin ich aber gespannt.

            Liebe Grüße aus http://www.braunschweig.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            1. Hallo,

              Wie schickst Du denn ein mit JavaScript positiv geprüftes Formular ab, wenn Du JS ausschaltest? Aber bitte, ohne es nachzubauen!

              Nun bin ich aber gespannt.

              Ehrlich gesagt sehe ich dein Problem nicht... Da man die Prüfung jawohl derart einbauen wird, dass sie sowieso nur greift, wenn JS aktiviert ist (ich glaube nicht, dass du User ohne JS einfach so vernachlässigst) kann ich das Formular auch abschicken, wenn ich JS deaktiviere?!? Oder versteh ich da grad irgendwas falsch???

              mfg,
                Philip

              1. Hello,

                Wie schickst Du denn ein mit JavaScript positiv geprüftes Formular ab, wenn Du JS ausschaltest? Aber bitte, ohne es nachzubauen!

                Nun bin ich aber gespannt.

                Ehrlich gesagt sehe ich dein Problem nicht... Da man die Prüfung jawohl derart einbauen wird, dass sie sowieso nur greift, wenn JS aktiviert ist (ich glaube nicht, dass du User ohne JS einfach so vernachlässigst) kann ich das Formular auch abschicken, wenn ich JS deaktiviere?!? Oder versteh ich da grad irgendwas falsch???

                <cite>
                Also ich brauche nur 2 Klicks, um Javascript zu deaktivieren. Der Formularnachbau ist damit eigentlich überflüssig ...
                </cite>

                Ich habe damit kein Problem, aber Du hast Ziegenmelker scheinbar nicht richtig verstanden. Wenn man Formularprüfungen mit JavaScript einbaut, dann schreibt man i.d.R. auch JavaScript am Client vor. Das ist ja durchaus legitim. Benutzer, die ihr JavaScript nicht einschalten wollen, dürfen eben nicht alle Funktionen nutzen.

                Das sind also in unserem Beispiel die nicht diskutierbaren Voraussetzungen.

                Wenn ich nun aber eine Formularprüfung mit JavaScript durchführe, baue ich die natürlich so auf, dass ein ungeprüftes Formular (also eines auf einem Non-JS-Client) gar nicht abgeschickt werden kann, es sei denn, man baut es eben nach. Am einfachsten geht das, wenn man nur ein Doppelkreuz ins action-Attribut einträgt und die Ressource erst mittels JavaScript nachträgt.

                Ohne Manipulation ist dann keine Absendung ohne JS möglich.

                Liebe Grüße aus http://www.braunschweig.de

                Tom

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                Nur selber lernen macht schlau
                1. Hallo,

                  Ehrlich gesagt sehe ich dein Problem nicht... Da man die Prüfung jawohl derart einbauen wird, dass sie sowieso nur greift, wenn JS aktiviert ist (ich glaube nicht, dass du User ohne JS einfach so vernachlässigst) kann ich das Formular auch abschicken, wenn ich JS deaktiviere?!? Oder versteh ich da grad irgendwas falsch???

                  <cite>
                  Also ich brauche nur 2 Klicks, um Javascript zu deaktivieren. Der Formularnachbau ist damit eigentlich überflüssig ...
                  </cite>

                  Ich habe damit kein Problem, aber Du hast Ziegenmelker scheinbar nicht richtig verstanden. Wenn man Formularprüfungen mit JavaScript einbaut, dann schreibt man i.d.R. auch JavaScript am Client vor. Das ist ja durchaus legitim. Benutzer, die ihr JavaScript nicht einschalten wollen, dürfen eben nicht alle Funktionen nutzen.

                  Nunja, wie ich ja oben schon geschrieben habe bin ich davon ausgegangen, dass man Nutzer ohne JS _nicht_ einfach so ignoriert ...

                  Das sind also in unserem Beispiel die nicht diskutierbaren Voraussetzungen.

                  Wenn ich nun aber eine Formularprüfung mit JavaScript durchführe, baue ich die natürlich so auf, dass ein ungeprüftes Formular (also eines auf einem Non-JS-Client) gar nicht abgeschickt werden kann, es sei denn, man baut es eben nach. Am einfachsten geht das, wenn man nur ein Doppelkreuz ins action-Attribut einträgt und die Ressource erst mittels JavaScript nachträgt.

                  Mir ist klar, wie man so etwas baut, wenn man nur JS fähigen Clients das Senden des Formulares ermöglichen will. IMHO sind diese ganzen Prüfungen per JS aber sowieso nur bedingt nützlich, nähmlich dann wenn man - neben der serverseitigen Prüfung - die Eingaben auch noch clientseitig prüfen will, um z.B. dem User per alert() o.ä. auf seinen Fehler hinzuweisen ...

                  Ohne Manipulation ist dann keine Absendung ohne JS möglich.

                  Es ist klar, dass _unter diesen Voraussetzungen_ nur eine Manipulation per Nachbau möglich ist. Ich bin aber wie gesagt von anderen Voraussetzungen ausgegangen.

                  mfg,
                    Philip

    2. Hi,

      $_POST["user"] und $_POST["pass"] werden bevor sie in die MysQL-Abfrage gehen auf Sonderzeichen auf dem Server überprüft und dann ausgeschlossen!

      Micha

    3. Hallo,

      bist Du Dir im klaren darüber, was passiert, wenn ein user als Name folgendes angibt:
      ich_bin_ein_gangster';delete * from aos_aerzte;...

      es wird garnichts passieren: mysql_query arbeitet nur einen Query ab, alles was nach dem ; kommt wird ignoriert - Zumal dein DELETE-Syntax sowieso falsch ist - DELETE erwartet keine Angabe der Spalten.

      Ich bin natürlich davon ausgegangen, dass Du den Usernamen nicht schon auf den Client durch JavaScript auf unzulässige Zeichen geprüft hast,

      das ist egal - Daten die vom User kommen dürfen _nie_ ohne serverseitige Prüfung verwendet werden.

      Grüße aus Nürnberg
      Tobias

      --
      Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
  3. Hello,

    das Stichwort heißt binary

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau