Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Zeichen Whitelist erstellen und string überprüfen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Zeichen Whitelist erstellen und string überprüfen

    Ich bin ziemlicher anfänger und habe da eine frage

    Ich möchte eine Variable überprüfen ich habe jetzt htmlspecialchars verwendet
    und war eigendlich zufrieden bis ich ein bischen über sicherheit gelesen habe
    da is mir dann aufgefallen das htmlspecialchars zeichen wie $ und ' zulässt?

    gibt es eine möglichkeit nur die Zeichen a-z A-Z 0-9 und -_ Zuzulassen ?

  • #2
    Wenn Du bisher htmlspecialchars() verwendet hast ...was willst Du erreichen/wo willst Du das einsetzen?

    Zitat von Anploe
    gibt es eine möglichkeit nur die Zeichen a-z A-Z 0-9 und -_ Zuzulassen ?
    Zum Beispiel mit [man]ctype[/man] oder regulären Ausdrücken kannst Du Zeichenketten auf diese Art abtesten.

    Kommentar


    • #3
      ich möchte die usereingabe vom benutzernamen Überprüfen und der sollte nur aus den Zeichen a-z A-Z 0-9 und -_ bestehen dürfen ich hab htmlspecialchars()
      verwendet aber es werden zeichen wie $ und ' zugelassen

      auf einer Seite über sicherheit Stand das diese Zeichen gefährlich werden können es stand leider keine lösung dabei wie man die aber sichern könnte ?

      Kommentar


      • #4
        In wie fern gefährlich? Das hängt immer davon ab, wo und wie Du die Daten verwendest.
        Wenn Du sie innerhalb eines HTML Dokuments ausgeben willst (und sie nicht die Struktur des Dokuments ändern dürfen), verwendest Du [man]htmlspecialchars[/man]()/[man]htmlentities[/man](). Diese beiden Funktionen maskieren die Zeichen, die HTML "gefährlich" werden können.
        Wenn Du die Daten mit mysql_query() verwenden willst, sicherst Du Zeichenketten mit [man]mysql_real_escape_string[/man]() ab. usw usw.
        Von einer Funktion sicherFürAllesUndJedes() halte ich nicht allzuviel.

        Kommentar


        • #5
          ok dann sag ich danke ich werde dann vermutlich erstmal die
          ctype_alnum funktion nehmen auch wenn die user dann keinen _- und kein leerzeichen im usernamen haben dürfen.

          Kommentar


          • #6
            Wenn ich in einem Forum ein ' eintippen möchte, und das ' verschwindet, weil der Programmierer das ' wegradiert, dann werde ich eine Mail an den Support schreiben und fragen, wo mein ' geblieben ist.

            Wenn ein ' in einer Usereingabe so brandgefährlich wäre, dann würde solch eine Seite wie php.de das ' sicher nicht in die Forumdatenbank lassen.

            Achso: Das gilt auch für " $ / % und andere Sonderzeichen.

            Kommentar


            • #7
              Du musst im Prinzip in Vorhinein abwegen was du bei welcher Feldeingabe erwartest. Und dann kannst z.B. so prüfen.

              PHP-Code:
              if(!preg_match("#([a-z0-9äöüß _-])#si",$_POST['username']))
              {
                     
              //fehlerausgabe etc.

              So schliest du alles aus auser diese Zeichen.

              Mit dem i nach dem Delimiter sagst das zwischen Groß und Klein schreiben kein Unterschied gemacht wird.

              Bei der Überprüfung eines Login würde ich aber den Modifier i nicht bei der Überprüfung verwenden.

              Kommentar


              • #8
                hmm schade
                PHP-Code:
                if(!preg_match("#([a-z0-9äöüß _-])#si",$nick))

                 echo 
                "FEHLER<br><br><br>";

                funktioniert bei mir leider nicht ???

                Kommentar


                • #9
                  probier mal
                  PHP-Code:
                  if(!preg_match("#^[a-z0-9äöüß _-]+$#si",$nick))

                   echo 
                  "FEHLER<br><br><br>";

                  Kommentar


                  • #10
                    Uiii danke Bleda das geht bei mir schon mal! jetzt muss ich nur noch rausfinden welchse zeichen was heist und bewirkt schließlich will ichs auch verstehen

                    Danke nochmal für de hilfe

                    Kommentar


                    • #11
                      Die Syntax kannst Du PHP: Regular Expression Details - Manual und PHP: Possible modifiers in regex patterns - Manual entnehmen.
                      # ist ein frei wählbares Trennzeichen. #pattern#options, /pattern/options, !pattern!options
                      Wenn Du das Trennzeichen innerhalb des Musters verwenden willst, musst Du es maskieren. Also wähle am besten ein Trennzeichen aus, das nicht im Muster vorkommt.

                      ^ steht an dieser Stelle für den Anfang der Zeichenkette. $ für das Ende der Zeichenkette.
                      mit [ ] definierst du eine Zeichenklasse. In diesem Fall die Zeichenklasse a-z 0-9 ä ö ü ß Leerzeichen _ und -
                      Das + steht für ein oder mehr Zeichen.

                      Das gesamte Muster sagt aus: Zwischen Anfang und Ende der Zeichenkette stehen nur Zeichen aus der definierten Klasse - mindestens eins.
                      Wenn das nicht der Fall ist - also entweder gar kein Zeichen oder mindestens eins, das nicht in der definierten Klasse ist - liefert preg_match() false und FEHLER<br><br><br> wird ausgegeben.

                      Kommentar


                      • #12
                        Vor allem:
                        Ich möchte eine Variable überprüfen ich habe jetzt htmlspecialchars verwendet
                        htmlspecialchars prüft nicht, es wandelt um! Sieh Dir mal in unserem Wiki die Ausführungen zu Formularvalidierung und den Unterschied zwischen Validieren und Filtern an.

                        Kommentar


                        • #13
                          danke david für die leicht verständliche und gute erklärung.

                          und @ nikosch ja du hast recht. ich hab den string vor htmlspecialchars und das ergebniss danach mit einer if anweisung überprüft. tut mir leid wenn ich mich da unklar ausgedrückt habe

                          Herzlichen dank an alle helfer

                          Kommentar

                          Lädt...
                          X