Ankündigung

Einklappen
Keine Ankündigung bisher.

Trotz Regex-Prüfung Post-Daten validieren

Einklappen

Neue Werbung 2019

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

  • Trotz Regex-Prüfung Post-Daten validieren

    Ist es sinnvoll bzw. angebracht POST-Daten auch nach einer Überprüfung durch Regex mit htmlentities usw unschädlich zu machen? Theoretisch dürfte ja bei geregexten Daten nichts mehr dabei sein, was schaden könnte.

    Danke und LG

  • #2
    htmlentities usw zu prüfen
    keine Ahnung, was du mit "usw" meinst aber htmlentities prüft überhaupt nichts und hat auch erstmal nichts mit eingehenden Daten zu tun sondern mit der Ausgabe im HTML-Kontext.

    Theoretisch dürfte ja bei geregexten Daten nichts mehr dabei sein, was schaden könnte.
    Das jedenfalls ist eine Pauschalaussage, die so nicht stimmt.

    Kommentar


    • #3
      Ich habs eh oben umgebessert.. ich meinte natürlich die Variablen entschärfen.

      Wenn ich mit Regex ein bestimmtes Format vorgebe.. das wäre in meinem Fall für eine beliebige E-Mail-Adresse:

      /^[a-z0-9]{1,}((\-|\_|\.)[a-z0-9]{1,})*@[a-z0-9]{1,}((\-|\.)[a-z0-9]{1,})*(\.[a-z]{2,7})+$/i

      dann kann ja eigentlich nur eine E-Mail-Adresse drinnenstehen und nichts schadhaftes, oder?

      BTW: usw heisst "und so weiter".
      PS: BTW heisst "by the way"

      Kommentar


      • #4
        und trotzdem sollten diese Daten per mysql__real_escape_string bzw deren Entsprechung bei deiner Datenbank-Erweiterung oder als prepared Statement automatisch Escaped geschrieben werden ....

        Kommentar


        • #5
          Meine Aussage bleibt bestehen:
          hat auch erstmal nichts mit eingehenden Daten zu tun sondern mit der Ausgabe im HTML-Kontext.
          Du sprichst davon, eingehende Daten zu "entschärfen", ohne den Kontext zu erwähnen, also muss ich davon ausgehen, dass du einfach pauschal auf alles htmlentities anwendest. Das macht Sinn, wenn die Variablen in HTML ausgegeben werden und sonst nichts. Insbesondere solltest du keine HTML Entities in einer Datenbank speichern, es sei denn das ganze Datenfeld ist tatsächlich HTML, beispielsweise ein formatierter Blog-Post.

          Stichwort Email-Adressen. Valide Adressen können auch "<" und ">" enthalten*, müssen also bei der Ausgabe in HTML mit htmlspecialchars behandelt werden, damit sie überhaupt korrekt dargestellt werden, XSS hin oder her.

          *) weshalb dein regulärer Ausdruck auch keine gute Idee ist, der lehnt noch viel mehr valide Emailadressen ab. Wir hatten das Thema kürzlich noch hier, dass Emailadressen lieber zu locker als zu strikt validiert werden sollten (strpos($email, '@') ist IMHO schon ausreichend). Oder nutze zumindest [man]filter_var[/man], da passiert zwar intern auch eine Regex-Validierung, aber mit einem unglaublich komplexen Ausdruck, der zumindest sehr nah am RFC ist und nur sehr spezielle Sonderfälle nicht abdeckt.

          Kommentar


          • #6
            Danke für eure Antworten.

            mysql__real_escape_string werde ich auf jeden Fall einbauen.

            "Reine" E-Mail-Adressen die "<" oder ">" enthalten habe ich so noch nie gesehen. Meinst du vielleicht das Format "Name" <Name@XYZ.net> ?

            Kommentar


            • #7
              Nein, ich meine "email-adressen in Anführungszeichen können <Sonderzeichen> enthalten"@example.com (Wikipedia)

              Für mysql_real_escape_string gilt das selbe was ich oben geschrieben habe, es kommt auf den Kontext an. Also bitte nur dann anwenden, bevor die Variable in mysql_query verwendet wird.

              Kommentar


              • #8
                < > weiß ich jetzt nicht .. aber schau dir mal IPv6 an .. und gültige Email-Adressen müssen ja nicht ne Domain umfassen, sondern dürfen auch eine IP-Adresse enthalten

                info@::1 ... und dann schau mal was dein regex dazu sagt

                Vorschlag - schau mal über den Tellerrand zu anderen "Diensten" mit Emails ... du gibst die email-Adresse ein (teils sogar 2mal) und was kommt dann ? Genau "ihr account wurde angelegt, um ihn zu aktivieren haben wir ihnen eine Email zugesendet. Bitte klicken sie auf den Aktivierungs-Link in der Email ..." Das ist nichts anderes als eine Email-Validierung auf die "Brute Force-Methode" - wenn du die Email von denen bekommst, dann ist die Email korrekt (und kann für Werbezwecke verkauft werden - aber darum geht es ja hier nicht)

                Kommentar


                • #9
                  Oh, wieder was gelernt, danke! Ehrlichgesagt ist mir so eine exotische E-Mail-Adresse noch nie untergekommen.

                  Kommentar


                  • #10
                    das liegt nur daran, dass sich Europa speziell Deutschland noch sehr zögerlich gibt bei der vollflächigen Einführung von IPv6 - andere Länder mussten da schon vorbauen (Südkorea, Taiwan, teilweise Japan und Stadtstaaten (Hong Kong / Singapur) ) - diesse Länder hatten schon relativ zeitig (so vor 5 Jahren) so massive Probleme mit den zur Verfügung stehenden IPv4 Adresspools, dass dort zwangsläufig IPv6 genutzt werden musste...

                    Kommentar

                    Lädt...
                    X