RegEx - Zeilenumbrüche erkennen

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

  • RegEx - Zeilenumbrüche erkennen

    Hi,

    um ein Kontaktformular gegen Email Injection abzusichern suche ich einen RegEx welcher möglichst viel abdeckt.

    Mein Entwurf sieht bisher so aus:

    PHP-Code:
    preg_match('/(%0A|%0D|\r\n|\n|\r)(content-type:|content-transfer-encoding:|mime-version:|subject:|to:|cc:|bcc:)/i'$input); 
    Nun hat sich beim Testen aber gezeigt das die Zeilenumbrüche die mit \n, \r bzw. \r\n eingeschleust werden nicht gefunden werden.

    Need help

    Gruss,
    xray

  • #2
    vielleicht ist
    PHP-Code:
    '\n' 
    nicht dasselbe wie
    PHP-Code:
    "\n" 

    Kommentar


    • #3
      Kann ich das so verstehen das die Eingabe von z.B. \n in einem Input Feld generell als String "\n" und nicht als Steuerzeichen '\n' behandelt wird?

      Kommentar


      • #4
        auch.
        [...] als String "\n" und nicht als Steuerzeichen '\n' [...]
        andersherum.

        Kommentar


        • #5
          hängt auch von vom schalter magic_quotes_gpc ab, ob auf get/post ein addslashes() ausgeführt wird.

          Kommentar


          • #6
            @penizillin
            Wenn die vermeintlichen Steuerungszeichen als Strings übergeben
            werden, braucht man diese doch eigentlich nicht zu überprüfen, oder?
            Vorausgesetzt man stellt sicher das die Eingaben auch wirklich über
            das Formular getätigt werden und nicht anderweitig an das Script
            gesendet werden. Dann müsste doch eine Überprüfung der
            Hexadezimalen Werte ausreichen.



            @3DMax
            magic_quotes_gpc hab ich per .htaccess auf off gestellt. Es wird nicht
            gequotet.

            Kommentar


            • #7
              Re: RegEx - Zeilenumbrüche erkennen

              Original geschrieben von xray
              Nun hat sich beim Testen aber gezeigt das die Zeilenumbrüche die mit \n, \r bzw. \r\n eingeschleust werden nicht gefunden werden.
              mal was anderes, hast du auch die anderen ausdrücke getestet? bei mir kommt kein einziger durch.
              irgendwie auch logisch, bei zwei klammer-ausdrücken - muss ja zwingend aus jeder klammer einer vorhandensein, ohne zwischenzeichen, nicht mal space.

              Kommentar


              • #8
                Re: Re: RegEx - Zeilenumbrüche erkennen

                Original geschrieben von 3DMax
                hast du auch die anderen ausdrücke getestet?
                Ja. Das Beides vorkommen soll ergab sich beim testen, da ja ein Zeilenumbruch Voraussetzung zum exploiten ist in diesem Fall... ist natürlich nichts fertiges

                Kommentar


                • #9
                  Re: Re: Re: RegEx - Zeilenumbrüche erkennen

                  Original geschrieben von xray
                  da ja ein Zeilenumbruch Voraussetzung zum exploiten ist ...
                  dann reicht doch die überprüfung darauf, warum dann noch alles aufzählen, was in diesem zusammenhang verboten ist (vielleicht hast du etwas vergessen) - und dann?
                  das was du machst, ist ein blacklist-check.
                  besser, ein whitelist-check - zeichen explizit erlauben, wenn möglich, und nur diese zeichen.

                  aber ich kenne mich mit dem thema e-mail-injections zu wenig aus, um dir da tipps zu geben, worauf man alles achten muss.
                  neulich gabs einen interessanten thread dazu - suchfunktion. dort hatte ich auch einen heise-link dazu gepostet.

                  [EDIT]
                  und verlass dich nicht auf alles, was du in der .htacces einstellst.
                  hat es php auch übernommen? echo (int)get_magic_quotes_gpc();
                  Zuletzt geändert von 3DMax; 05.08.2006, 22:35.

                  Kommentar


                  • #10
                    Original geschrieben von xray
                    @penizillin
                    Wenn die vermeintlichen Steuerungszeichen als Strings übergeben
                    werden, [...]
                    nein, das stimmt so nicht ganz - natürlich ist "das gesamte", was übertragen wird, ein string. jedoch interpretiert php in _deinem_ code die steuerzeichen nur dann als solche, wenn du sie in anführungsstriche setzst. andernfalls werden sie als eine zeichenkette, etwa "[backslash][n]" aufgefasst (und eignen sich somit nicht zum abfangen mittels regulärer ausdrücke).

                    aber im großen und ganzen - wozu die ganze mühe?
                    lass einfach nicht zu, dass sich die user-eingabe mit den headers kreuzt.

                    Kommentar

                    Lädt...
                    X