Login- DB Einträge vergleichen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #31
    Also ich habe mir überlegt man könnte alle Felder auf bestimmte Kriterien untersuchen um diese SQL Injection zu vermeiden. Ich habe folgedne FeldeR:

    Name(max. 20 Zeichen)
    Hier könnte man Testen ob der Name nur aus Buchstaben besteht.(Ich denke mal das PHP da standartmäßig einen Befehl hat)

    Vorname
    Hier auch

    Geschlecht
    Hier kann man ja nichts machen, weil es input-tags mit dem type "radio2 sind... da kann man schlecht was eingeben.

    Geburtsdatum
    Besteht aus 3 Feldern.2 Dropdown und 1 Eingabefeld(für das Jahr[max. 4 Zeichen]). Da müsste man ja nur das letzte Feld untersuchen, ob es nur aus Zahlen besteht.(da gibts den ctype_digit()-Befehl)

    Username
    Hier müsste man überlegen eine eigene Funktion zu entwerfen, welche den String untersucht. Dann müsste man bei der Registrierung dazu schreiben, dass nur Buchstaben, Zahlen, "-" und "_" erlaubt sind..... damit kann man doch nichts machen, oder?

    Email
    Hier weiß ich auch noch nicht so genau.

    Passwort
    Dazu schreiben dass es nur aus Buchstaben und Zahlen bestehen darf. Und dann eben eine Funktion zum Prüfen schreiben.

    ICQ
    Hier kann man wieder den ctype_digit() - Befehl nutzen

    MSN
    Hier weiß ich noch nicht wie es gehen soll.

    Das bin ich
    Hier wirds schwierig. Ich fände es blöd dem nutzer zu verbieten, Sonderzeichen zu nutzen.

    Meine Interessen
    Hier gilt das gleiche

    Job
    Hier kann man wieder prüfen obs nur Buchstaben sind.

    Wohnort
    Hier auch.


    Ist das soweit in Ordnung?

    EDIT:

    Ich habe hier in einem Thread davon gelesen einfach alle Strings mit ereg() nach bestimmten Zeichen zu durchsuchen... wäre das besser?
    Last edited by Lexus_Ks; 08-06-2006, 00:14.
    -Am Anfang war das Wort-

    Ich habe fertig mit Abi ^^

    Comment


    • #32
      Original geschrieben von Lexus_Ks
      Geschlecht
      Hier kann man ja nichts machen, weil es input-tags mit dem type "radio2 sind... da kann man schlecht was eingeben.
      Irrtum! Ich kann das Formular auch bei mir speichern, ändern und dann abschicken. Denk mal drüber nach.

      Zum Prüfen der Formulardaten eignen sich reguläre Ausdrücke sehr gut. Die kann man an zentraler Stelle (Konfig) einmal definieren und muß später nicht am Code fummeln, wenn sich die Kriterien ändern.

      Gegen SQL-Injection hilft mysql_real_escape_string() und natürlich sauberes Programmieren. Das heißt, man sollte stets wissen, welchen Typ und Wert jede Variable hat oder annehmen kann. Dazu gehört die wasserdichte Prüfung der EGPCS-Daten vor ihrer Benutzung.

      Comment


      • #33
        Also mysql_real_escape_string() sagt mir jetzt schon die zweite Person.... ahbe mir den link durchgelesen... aber ich verstehe es nit und was heißt EGCPS????

        Wie solltest du denn mein Formular von deinem PC aus an meinen Server senden? Dann stimmen doch die ganzen Links nicht mehr, oder?
        -Am Anfang war das Wort-

        Ich habe fertig mit Abi ^^

        Comment


        • #34
          EGPCS steht für $_ENV, $_GET, $_POST, $_COOKIE und $_SESSION, also so ziemlich alle Wege, auf denen ein PHP-Script Daten von außerhalb bekommen kann. Die Sessiondaten sind natürlich nicht wirklich von außen ...

          Zur Manipulation deines Formulars muß nur der action-Parameter der Form passen. Den kann ich auch manipulieren. Alles kann ich manipulieren. Jeder kann das!

          Comment


          • #35
            Aber um die Prüfung dieser Daten ( in meinem Fall nur die $_POST Daten, weil ich nur diese verwende) geht es doch die ganze Zeit ^^
            Und was macht jetzt dieses mysql_real_escape_string() ..... ich habe mir den Text hinter dem Link durchgelesen, aber ich verstehe ihn nicht so richtig -.- Also wie werden diese Zeichen denn maskiert? Muss ich dann auch kein Stripslashes mehr machen??
            Last edited by Lexus_Ks; 08-06-2006, 12:48.
            -Am Anfang war das Wort-

            Ich habe fertig mit Abi ^^

            Comment


            • #36
              Was bitte verstehst du denn an
              Maskiert spezielle Zeichen innerhalb eines Strings für die Benutzung in einer SQL-Anweisung
              Diese Funktion maskiert spezielle Zeichen in unescaped_string, unter Berücksichtigung des aktuellen Zeichensatzes der Verbindung, zur sicheren Benutzung in mysql_query().
              Bevor Sie eine Anfrage an MySQL absetzten, müssen Sie immer diese Funktion verwenden (mit einigen Ausnahmen), um Ihre Daten sicher zu machen.
              nicht?
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Comment


              • #37
                Ja woher soll ich wissen wie das maskiert wird? Das steht da nicht -.-
                Außerdem kapier ich nicht warum ich das so machen soll -__- ich benutze doch stripslashes wegen diesem magic_quotes ... ich kapier des nit

                Brauch ich dann Stripslashes auch nicht mehr wenn ich mysql_real_escape_string nutze?

                Ich müsset doc htrotzdem (in der if abfrage (falls dieses magic-quotes an ist)) noch stripslashes benutzen, oder?

                Und ich muss doch dieses mysql_real_escape_string müsste ich doch auch wieder rückgängig machen oder????
                Zudem müsste ich auch irgendwann das stripslashes mit addslashes rückgängig machen Ich blicke nicht merh durch
                Last edited by Lexus_Ks; 08-06-2006, 13:16.
                -Am Anfang war das Wort-

                Ich habe fertig mit Abi ^^

                Comment


                • #38
                  Okay, diese Funktion stellt also NULL, \x00, \n, \r, \, ', " und \x1a ein \ voran. Dass heißtr durchaus, dass ich vorher noch (wenn magic_quotes an ist) stripslashes machen muss, aber ich muss kein addslashes machen. Okay danke.... manchmal dauert es ein bisschen, bis ich was peile -.-

                  Aber was ich mich JETZT noch frage ist, ob es sinnvoll ist diesen Befehl in dem Query zu machen oder dies lieber vorher zu erledigen?
                  -Am Anfang war das Wort-

                  Ich habe fertig mit Abi ^^

                  Comment


                  • #39
                    Hier, habe jetzt einfach addslashes ersetzt. Muss ich bei den SELECT FROM WHERE Abfragen auch so was machen (gegen SQL Injection)? Sähe es dann so aus:

                    PHP Code:
                    $user_equal="SELECT
                            username 
                             FROM 
                            users
                             WHERE 
                            username = mysql_real_escape_string('
                    $_POST[username]')"
                    Wäre das richig?

                    Im Anhang also erstmal wieder die aktuelle Datei
                    Attached Files
                    -Am Anfang war das Wort-

                    Ich habe fertig mit Abi ^^

                    Comment


                    • #40
                      ... username = '".mysql_real_escape_string(...)."' ...

                      Es ist eine PHP- keine MySQL-Funktion.

                      Comment


                      • #41
                        achso ^^

                        also:

                        PHP Code:
                        $email_equal="SELECT
                                email
                                  FROM
                                users
                                  WHERE
                                email = '"
                        .mysql_real_escape_string($_POST['username'])."' "
                        Last edited by Lexus_Ks; 08-06-2006, 15:27.
                        -Am Anfang war das Wort-

                        Ich habe fertig mit Abi ^^

                        Comment


                        • #42
                          So funktioniert es aber nicht. Jetzt lässt er es zu wenn ich eine emailadresse angebe, die schon registriert ist. das ar davor nicht so.

                          EDIT:

                          Lol, ist ja klaro, wenn ich die emailadresse mit dem username vergleiche ^^
                          Last edited by Lexus_Ks; 08-06-2006, 16:53.
                          -Am Anfang war das Wort-

                          Ich habe fertig mit Abi ^^

                          Comment


                          • #43
                            Wenn magic_quotes_gpc bei dir immer noch auf on ist, musst du natürlich vorher stripslashes anwenden.
                            I don't believe in rebirth. Actually, I never did in my whole lives.

                            Comment


                            • #44
                              Ist klaro, habe ich auch noch.. wie im Edit meines vorigen Postes gesagt: Wenn ich $_POST['username'] mit der email adresse aus der db vergleiche kann ja keine übereinstimmung kommen ^^ Funktioniert jetzt.

                              Jetzt werde ich noch einbauen, dass man kein leeres Passwortfeld abgeschickt werden kann (das ist keinem von euch aufgefallen- in der aktuellen version gehts nämlich noch) und dass man eine ICQ Nummer nur einmal nutzen kann...

                              Wie könnte ich denn emailadressen auf ihre Richtigkeit prüfen?
                              -Am Anfang war das Wort-

                              Ich habe fertig mit Abi ^^

                              Comment


                              • #45
                                Ich habe noch ein Problem mit meiner DB. Ich habe als Typ für die Spalte in der die ICQ Nummer gespeichert wird TINYINT(9) angegeben. Leider werden nur 3 Ziffern gespeichert, und zwar jedes mal die gleichen : 127
                                -Am Anfang war das Wort-

                                Ich habe fertig mit Abi ^^

                                Comment

                                Working...
                                X