Usereingaben absichern

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

  • Usereingaben absichern

    Hallo erstmal

    Also ich nutze eine Menge html Formulare und möchte diese gerne gegen Angriffe schützen. Dazu prüfe ich jeden Inhalt mit Regex, und zwar so passgenau und "aggressiv" wie nur möglich, eigentlich sowas wie whitelisting.

    Wie sicher ist diese Methode? Das einzige, was ich im folgenden aufgerufenen Script dann mache ist

    PHP-Code:
    if (ereg($regexmuster$HTTP_POST_VARS["inhalt"]) == false)
    {
            echo 
    "ungueltige Eingabe";
        } else {
           
    //mach dies und das, z.B. include fortfahren.php

    Ist diese Maßnahme ausreichend? sollte man lieber gleich mit die() anrücken? Das wollte ich eigentlich vermeiden, denn ein HTML-Layout, welches auf PHP-Includes basiert (z.B. 3 Spalten Layout) wird ja dann einfach ab dem Content abgeschnitten falls die Eingabe und somit regex nicht stimmt, deshalb if..else statt die.
    mfg
    Zuletzt geändert von INC.; 20.04.2007, 18:07.

  • #2
    ist ok so.

    warum die() verwenden. solange wie eine eingabe fehlerhaft ist, führst du eben nicht den Sinn des Formulars (wie Mail verschicken) aus, sondern gibts Fehlermeldungen zurück. ganz einfach!

    Kommentar


    • #3
      OffTopic:
      bitte preg_match statt ereg verwenden
      Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

      Kommentar


      • #4
        Ok danke. Das mit ereg und preg_match liegt an der Geschwindigkeit?

        Habe bisher ereg nur benutzt, da in der Doku steht es wäre POSIX erweitert und man könnte damit non-greedy matches erreichen, was ich hin und wieder brauche.

        Wusste nicht, dass dies mit preg_match auch geht.

        mfg

        Kommentar


        • #5
          und wieso benutzt Du $HTTP_POST_VARS und nicht $_POST ?

          Kommentar


          • #6
            Eigentlich benutze ich $_POST, war ein altes Script als Beispiel welches ich da gepostet habe. Allerdings habe ich mir über die Unterschiede nie Gedanken gemacht, dachte $_POST wäre nur der Kurzalias.

            Kommentar


            • #7
              Nein, $_POST ist (auto)global, $HTTP_POST_VARS hingegen ist nicht global. Seit PHP 4.1.0. PHP wird empfohlen, die Superglobalen zu benutzen.
              Nieder mit der Camel Case-Konvention

              Kommentar


              • #8
                Original geschrieben von INC.
                Habe bisher ereg nur benutzt, da in der Doku steht es wäre POSIX erweitert und man könnte damit non-greedy matches erreichen, was ich hin und wieder brauche.
                Für Greedy/Ungreedy gibt es bei preg Pattern-Modifiers und auch direkt Regex-Expressions, siehe Manual

                Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                Wie man Fragen richtig stellt

                Kommentar

                Lädt...
                X