Ankündigung

Einklappen
Keine Ankündigung bisher.

Formulardaten (Codes) unschädlich machen

Einklappen

Neue Werbung 2019

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

  • Formulardaten (Codes) unschädlich machen

    Hi,

    suche die php-Funktion, die übergebene Formulardaten auf HTML-/PHP-Code/SQL-Kommandos überprüft und unschädlich macht.

    Habe mich schon totgegoogelt, aber nix gefunden...

    LG


  • #2
    Fuer HTML benutzt du htmlspecialchars(), fuer SQL mysql_real_escape_string(). Fuer alles zusammen gibt es nichts wirkungsvolles.
    "Mein Name ist Lohse, ich kaufe hier ein."

    Kommentar


    • #3
      Und prüfen und escapen sind auch noch zwei paar Schuhe.
      --

      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
      Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


      --

      Kommentar


      • #4
        Zitat von Paeisi Beitrag anzeigen
        ... suche die php-Funktion, die übergebene Formulardaten auf HTML-/PHP-Code/SQL-Kommandos überprüft und unschädlich macht.

        Habe mich schon totgegoogelt, aber nix gefunden...
        Das liegt daran, dass es eine solche Funktion nicht gibt.

        Wenn dein PHP-Script Formulareingaben entgegennimmt, sind das erstmal ganz harmlose Zeichenketten (Strings). Die tun niemandem weh. Erst wenn du sie an Funktionen übergibst, die diese Zeichenketten interpretieren, wird es problematisch. Also musst du Vorsichtsmaßnahmen ergreifen. Die üblichen sind (wie auch schon zum Teil erwähnt wurde):

        Für alle HTML-Ausgaben im Webbrowser htmlspecialchars().
        Die Betonung liegt auf "alle", denn die Zeichen in den Attribut-Angaben der HTML-Tags werden gerne vergessen.

        Für URLs urlencode() oder rawurlencode().

        Für (das allseits beliebte) MySQL in der 08/15-Version mysql_real_escape_string().

        Für Datenbank-Anfragen per PDO benutzt man am bestenprepared Statements, da kümmert sich PDO selbst um das richtige "escaping".

        Für PHP-Code gibts keine spezielle Funktion. Aber da man diesen eh nur per eval() ausführen kann, wenn er als Zeichenkette vorliegt, und eval() im Allgemeinen für gefährlich gehalten wird, verzichtest du einfach auf die Benutzung von eval().

        Für viele andere Anwendungen muss man sich eine eigene Escaping-Funktion schnitzen. Das erfordert erstens Wissen über die erlaubten und nicht erlaubten Zeichen für die jeweilige Anwendung und zweitens String-Replace-Funktionen wie preg_replace(), strtr() oder str_replace().

        Nicht geeignet für diese Zwecke sind übrigens stripslashes() und strip_tags(). Wer dir die empfiehlt, weiß meistens nicht, was er|sie tut.
        Wenn man die Wurst schräg anschneidet, hält sie länger, weil die Scheiben größer sind.

        Kommentar


        • #5
          Für eingehende Daten bietet sich die Filter Extension an
          DevBlog|3D Online-Shopping|Xatrium

          Kommentar


          • #6
            Zitat von Tiberius Beitrag anzeigen
            Für eingehende Daten bietet sich die Filter Extension an
            Zur Eingabedatenvalidierung ist die bedingt geeignet (wenn sie denn irgendwann mal fehlerfrei ist). Aber SQL-Injections kann man damit nicht verhindern.
            Wenn man die Wurst schräg anschneidet, hält sie länger, weil die Scheiben größer sind.

            Kommentar


            • #7
              Ich würde in deinem fall für jede eingabe gesondert unterscheiden. ist es ein name prüfe mit nem RegExp einfach und verbiete bestimmte Sonderzeichen. Am ende noch ein Mysql_real_escape_string und dann bist du sicher.
              Zitat von nikosch
              Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

              Kommentar

              Lädt...
              X