Ankündigung

Einklappen
Keine Ankündigung bisher.

Text in Textdatei speichern | Sonderzeichen beim Speichern verhindern

Einklappen

Neue Werbung 2019

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

  • Text in Textdatei speichern | Sonderzeichen beim Speichern verhindern

    Hallo und vielen Dank für die Unterstützung.
    Ich arbeite, wie schon erwähnt, an meinem CMS.

    Mit folgendem Code speichere ich mein Text in eine Textdatei:
    PHP-Code:
    <?php
    $lines 
    file('beispiel.txt');
    $pageContent trim($_POST['sichern']);
    $pageContent str_replace(array("\r\n""\r""\n"), '<br />'$pageContent);
    array_splice($lines101$pageContent PHP_EOL);
    file_put_contents('beispiel.txt',$lines);  
    ?>
    Leider könnte man missbräuchlich noch Sonderzeichen
    mit speichern, was wiederum zu Folge hat, das man
    evtl. Codes schreiben könnte.

    Habt ihr eine Idee, wie ich Sonderzeichen wie "<"
    einfach löschen tu? Bevor er diese sendet. Oder noch
    besser. Beim Speichern wandelt er diese in leerzeichen um.

    Ich würde mich über Tippps sehr freuen.
    Beste Grüß


  • #2
    Garnicht. Kontextwechsel. Die User werden sich Freuen, wenn sie < und > einfach nicht benutzen können.

    http://php-de.github.io/jumpto/kontextwechsel/
    Zitat von nikosch
    Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

    Kommentar


    • #3
      Zitat von tkausl Beitrag anzeigen
      Garnicht. Kontextwechsel. Die User werden sich Freuen, wenn sie < und > einfach nicht benutzen können.

      http://php-de.github.io/jumpto/kontextwechsel/
      Leider arbeite ich nicht mit mySQL

      VG

      Edit: Ginge das hier?

      http://de2.php.net/htmlspecialchars

      Kommentar


      • #4
        Hallöchen,

        Zitat von LikeStar Beitrag anzeigen
        Leider arbeite ich nicht mit mySQL
        Was hat das damit zu tun?

        Diese Methode wird lediglich für die Ausgabe genutzt.

        Viele Grüße,
        lotti

        Kommentar


        • #5
          Ja, das sollte dir helfen, setze es aber erst bei der Ausgabe ein und nicht schon beim Abspeichern, sonst hast du nur Ärger, wenn du mit dem Daten später irgendwas machen möchtest.
          mysql ist veraltet Mails senden: Ohne Probleme und ohne mail()
          PHP-Code:
          echo 'PS: <b>Meine Antwort ist keine Lösung, sondern nur eine Hilfe zur Lösung.</b>'

          Kommentar


          • #6
            Vielen Dank Lotti und danke ChrisvA,

            Erm. soll ich Magic Quotes einfach aktivieren? ; - )
            Oder ist das etwas ganz Anderes?

            Gruß

            Kommentar


            • #7
              Nein, 1. ist das was ganz anderes und 2. wird das ohnehin in neueren PHP-Versionen nichtmehr exisieren.

              Nen Grund, warum du nicht mit MySQL arbeitest?


              Kontextwechsel:
              TXT: eine .txt-Datei kann mit <> umgehen -> lass <> einfach <> sein
              HTML: HTML würde <> auswerten, daher escapen/replacen mit htmlspecialchars, allerdings erst bei der Ausgabe.
              Zitat von nikosch
              Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

              Kommentar


              • #8
                Nein, meiner Meinung nach besteht die Gefahr, dass irgend ein "Hacker" in die Textdatei ein PHP Script oder JAVASCRIPT schreibt.
                Oder irre ich mich da?

                PHP sollte Sonderzeichen irgendwie in Leerzeichen "ersetzen", bevor gespeichert wird.

                Mit Javascript könnte ich das Ganze ja eigentlich auch lösen. Wobei Javascript immer eine schlechte "Lösung" ist.

                Kommentar


                • #9
                  Zitat von LikeStar Beitrag anzeigen
                  Nein, meiner Meinung nach besteht die Gefahr, dass irgend ein "Hacker" in die Textdatei ein PHP Script oder JAVASCRIPT schreibt.
                  Oder irre ich mich da?
                  Dann sorge dafür, dass die Datei nicht ausgeführt wird. Was ist, wenn wirklich mal jemand PHP-Code präsentieren will?

                  Zitat von LikeStar Beitrag anzeigen
                  Mit Javascript könnte ich das Ganze ja eigentlich auch lösen. Wobei Javascript immer eine schlechte "Lösung" ist.
                  Sicherheitstechnisch könntest du nicht...
                  Zitat von nikosch
                  Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

                  Kommentar


                  • #10
                    Darum möchte ich Sonderzeichen verhindern

                    Kommentar


                    • #11
                      Dann möchtest du wohl sowas wie HTML Purifier. Damit kannst du alle Zeichen zulassen und bösen Coden einfach filtern. Aber wie schon angemerkt wurde brauchst du das eigentlich nicht, wenn du die Ausgabe entsprechend escapest.

                      Kommentar


                      • #12
                        schau doch mal mein Code an...

                        wie würdest du's lösen?

                        Gruß

                        Kommentar


                        • #13
                          Hallöchen,

                          Zitat von LikeStar Beitrag anzeigen
                          wie würdest du's lösen?
                          was willst du denn lösen?

                          Du kannst die Eingaben in erster Linie 1:1 so speichern, wie der Nutzer sie eingegeben hat. Für den jeweiligen Kontext (SQL, HTML-Ausgabe, ..) musst du sie, zum Zeitpunkt des Kontextwechsel, allerdings vorbereiten. Wie das geschieht hängt vom jeweiligen Kontext ab. D.h., wenn du die Eingabe in einer Datenbank speichern willst, machst du das am besten über Prepared Statements - die schützen dich vor SQL-Injections. Bei der Ausgabe als reinen Text, jagst du den Krempel durch htmlspecialchars. Die Daten bleiben in ihrem Kern aber unberührt.

                          Viele Grüße,
                          lotti

                          Kommentar


                          • #14
                            Natürlich muss der Thread in die grüne Wiese verschoben werden.
                            Sehr hilfreich. Wirklich.

                            Ich löse dann wohl mit Javascript. Ich glaube du hast mich nicht verstanden.

                            Gruß

                            Kommentar


                            • #15
                              Hier kann man leider nicht editieren.


                              es fehlt ein "es"

                              Kommentar

                              Lädt...
                              X