cr: ä usw wird nicht beachtet

hallo,

ich habe diverse php script, die texte von besuchern (z.b. gästebuch) in eine textdatei schreiben.

nun sind die meisten besucher natürlich nicht html bewandert und kennen die regel nicht, dass ä zu ä usw. wird.

die darstellung ist im ie6, aktuellen opera und firefox ohne probleme.

da ich auf anderen seiten im quelltext auch schon gesehen habe, dass sowas nicht beachtet wird, die frage, in wie weit dies zu einem problem werden kann bzw. wie problematisch das ist?

danke fü eure mails

der cr

  1. Hallo cr,

    wenn Du – was ich vermute – von Usern eingegebene Texte ohne irgendeine Validierung auf Deiner Website wieder ausgibst, wirst Du ganz andere Probleme bekommen: Jeder kann beliebig HTML-Code, Stylesheets und vor allem Javascript schreiben und damit Alertboxen aufspringen lassen, auf Sexseiten umleiten, versuchen, Cookies auszuspionieren etc. pp.

    Strichpunkt: Cross-Site Scripting (XSS)

    Die Umlaute selbst sollten erhalten bleiben, wenn Du Dich für eine Codierung entscheidest (iso 8859-1 oder utf-8 oder …) und diese durchgängig beibehältst. Umlaute als benannte Zeichen (ä → ä) notieren ist dann nicht nötig.

    Gruß Olaf Schneider

    1. wenn Du – was ich vermute – von Usern eingegebene Texte ohne irgendeine Validierung auf Deiner Website wieder ausgibst

      :-) stimmt

      wirst Du ganz andere Probleme bekommen

      :-(

      d.h. entweder mit strip_tags den kompletten html und php code entfernen oder nur die zeichen, damit der text dazwischen weider gegeben werden kann...(htmlspecialchars)

      richtig?

      ahc und dass mit dem 2. teil den umlauten habe ich nicht so ganz geblickt?

      1. hi,

        d.h. entweder mit strip_tags den kompletten html und php code entfernen

        Nein, bitte nicht die Wildsau.

        oder nur die zeichen, damit der text dazwischen weider gegeben werden kann...(htmlspecialchars)

        htmlspecialchars entfernt keine Zeichen, sondern wandelt HTML-eigene Zeichen in ihre Entity-Schreibweise um, so dass sie "ungefährlich" sind.

        ahc und dass mit dem 2. teil den umlauten habe ich nicht so ganz geblickt?

        Wenn du eine Zeichenkodierung für deine Seite(n) wählst, die gebräuchliche Sonderzeichen wie die Umlaute bereits enthält, dann brauchst du sie nicht in irgendwas umwandeln.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. htmlspecialchars entfernt keine Zeichen, sondern wandelt in ihre Entity-Schreibweise um, so dass sie "ungefährlich" sind.

          also damit wäre die gefahr gebannt?

          noch eine frage dann dazu:

          ich habe eine seite, wo besucher ihre eigenen lieblingslinks eintragen können. es gibt 3 hauptfelder: name, link, beschreibung

          bei name und beschreibung habe ich das nun mit dem obigen code entschärft, aber wie mach ich das am besten bei links, denn da sollen ja echte links da sein.

          die ausgabe in php ist etwa so:

          echo "$name.....<a href='http://$link' target='_blank'>link</a>.......$beschreibung";

          1. ich habe eine seite, wo besucher ihre eigenen lieblingslinks eintragen können. es gibt 3 hauptfelder: name, link, beschreibung

            problem gelöst, auch mit code von vorhin...spricht etwas dagegen?

            ich habe aber noch ein letztes problem(wenn wir einmal bei problemen sind)

            ich habe eine textdatei mit eingabewerte:

            testuser|22.09.2005|blabal anfudhg
            testuser2324|20.09.2005|blabal anfudhg

            php öffnet die datei mit fopen, (a+)
            schreibt eine neue zeile rein nach dem schema wie oben und speichert und schliest...

            wenn ich nun manuell aus dieser txt datei etwas lösche und den curser an den anfang der dati setzte (ohne php), wo er auch ist wenn ich sie öffne, dann schreibt er mir bei einem neuen eintrag mit php  den neuen text einfach dahinter (aber unregelmäßig manchmal auch nicht)

            woran liegt das?

            1. Hallo cr!

              dann schreibt er mir bei einem neuen eintrag mit php  den neuen text einfach dahinter (aber unregelmäßig manchmal auch nicht)

              woran liegt das?

              Ich vermute mal, dass es dann passiert, wenn Du eine Textzeile löschst, welche die letzte der Datei ist. Dann löschst Du sicherlich auch die letzte "Leerzeile", die immer vorhanden sein muss, wenn untereinander geschrieben werden muss. Fehlt eine leere Zeile am Dateiende, so wird der Text am Ende der letzten vorhanden dran gehängt, erst dann generiert Dein Script die neue Leerzeile.

              Manchmal ist es auch notwendig, die lokal "per Hand" verarbeitete Datei, falls Du sie von Deinem Server gedownloadet hast, vor dem erneuten Hochladen in Unix-Format umzuwandeln: Ein Perl-Script für ein GB, dass Einträge nach Bad Words gegen eine als .txt gespeicherte Liste prüfen sollte, verweigert regelmäßig den Dienst, wenn ich ein neues Wort hinzufüge und vor dem Hochladen vergesse, ins Unix-Format zu konvertieren. "Gute" Text-Editoren bieten eine solche Funktion.

              Viele Grüße aus Frankfurt/Main,
              Patrick

              --

              _ - jenseits vom delirium - _
          2. Moin,

            ich habe eine seite, wo besucher ihre eigenen lieblingslinks eintragen können. es gibt 3 hauptfelder: name, link, beschreibung
            die ausgabe in php ist etwa so:
            echo "$name.....<a href='http://$link' target='_blank'>link</a>.......$beschreibung";

            das ist aber nicht fein. Wenn ich also eine korrekte, vollständige URL eingebe, etwa "http://de.selfhtml.org/", dann verstümmelt deine echo-Anweisung das zu einem ungültigen Link, indem es einfach nochmal das Protokoll-Präfix http:// davorklatscht.
            Nee, da solltest du besser die eingegebene URL in ihre Bestandteile zerlegen und _nur die fehlenden Komponenten_ ergänzen.

            So long,
             Martin

            --
            Die Zeit, die man zur Fertigstellung eines Projekts wirklich braucht, ist immer mindestens doppelt so lang wie geplant.
            Wurde dieser Umstand bei der Planung bereits berücksichtigt, gilt das Prinzip der Rekursion.