Jester: Gästebuch-Sicherheit

Merhaba Forum!

Eben habe ich mein erstes Gästebuch in PHP
fertiggestellt.
Es wäre sehr hilfreich für mich, wenn Ihr
durch entsprechende Einträge versuchen
könntet, das Design zu 'zerschießen' oder
ungewollte Kommandos ausführen zu lassen.

Der Link: http://www.exactdesign.de/book/.

Ihr braucht Euch nicht zurückzuhalten, mir
geht es schließlich um die Sicherheit.

Dank' Euch - Ollie

--
Die Welt ist grau.
Und bunt.
Content is Quing!
sh:( fo:| ch:? rl:? br:& n4:( ie:| mo:| va:) de:> zu:) fl:| ss:| ls:[ js:|
  1. hallo

    Merhaba Forum!

    Eben habe ich mein erstes Gästebuch in PHP
    fertiggestellt.
    Es wäre sehr hilfreich für mich, wenn Ihr
    durch entsprechende Einträge versuchen
    könntet, das Design zu 'zerschießen' oder
    ungewollte Kommandos ausführen zu lassen.

    hab das design zerstören können mit einem langen eintrag von /dev/random,
    (horizontale scrollleiste erscheint).
    nachdem mir jemand mein gästebuch mit sinnlosen extrem langen beiträgen
    zugemühlt hat, empfehle ich dir eine längenbeschränkung einzuführen.
    zudem würde ich die zeit, ip und den browser des eintragenden ebenfalls
    abspeichern.
    http://fam-kuster.ch/html/php_darstellen.php?datei=html/gaestebuch
    mein script, hat aber immer noch keine längenbeschränkung.

    gruss
    thomas

    Der Link: http://www.exactdesign.de/book/.

    Ihr braucht Euch nicht zurückzuhalten, mir
    geht es schließlich um die Sicherheit.

    Dank' Euch - Ollie

    1. High tomix,

      dann hast Du mich also auf den Fehler aufmerksam ge-
      macht - ich danke Dir, das Limit habe ich eingebaut.
      (Ich dachte auch, dass ich das _nicht_ vergessen hätte...

      LG - Ollie

      --
      Die Welt ist grau.
      Und bunt.
      Content is Quing!
      sh:( fo:| ch:? rl:? br:& n4:( ie:| mo:| va:) de:> zu:) fl:| ss:| ls:[ js:|
  2. Hallo,

    Der Link: http://www.exactdesign.de/book/.

    Trägt man als HP zB ein: "><script language="JavaScript">alert(5)</script> kommt Parse error: parse error in /home/sites/site101/web/book/dbentry.php on line 40

    Gruss, Thoralf

    --
    Sic Luceat Lux!
    1. Merhaba!

      Zunächst 'mal vielen Dank!
      Der parse error kam, weil ich gerade dabei war,
      die fehlende Textlängen-Limitierung zu erstellen,
      auf deren Notwendigkeit mich einer Eurer Einträge
      hingewiesen hatte, sollte gefixed (Latinoider
      Germanglizismus) sein ;)

      Iye Günler - Ollie

      --
      Die Welt ist grau.
      Und bunt.
      Content is Quing!
      sh:( fo:| ch:? rl:? br:& n4:( ie:| mo:| va:) de:> zu:) fl:| ss:| ls:[ js:|
      1. Der parse error kam, weil ich gerade dabei war,
        die fehlende Textlängen-Limitierung zu erstellen,
        auf deren Notwendigkeit mich einer Eurer Einträge
        hingewiesen hatte, sollte gefixed (Latinoider
        Germanglizismus) sein ;)

        Na, das hat aber nicht viel gebracht.

        Gruß,
          soenk.e

        PS: Dein HTML-Stil ist gruselig, Tabellenlayout mit <div>s gemischt.

        1. Hei, Soenk.e,

          Na, das hat aber nicht viel gebracht.

          Gruß,
            soenk.e

          Wieso? Hast Du einen Parse Error bekommen?

          PS: Dein HTML-Stil ist gruselig, Tabellenlayout mit <div>s gemischt.

          Valides HTML 4.01 ohne Konflikte.
          Erklärst Du mir, warum das 'gruselig' ist?
          Ein <div> darf doch eine Tabelle enthalten,
          oder sehe ich das falsch?

          Iye Günler - Ollie

          --
          Die Welt ist grau.
          Und bunt.
          Content is Quing!
          sh:( fo:| ch:? rl:? br:& n4:( ie:| mo:| va:) de:> zu:) fl:| ss:| ls:[ js:|
          1. Holladiewaldfee,

            Valides HTML 4.01 ohne Konflikte.
            Erklärst Du mir, warum das 'gruselig' ist?
            Ein <div> darf doch eine Tabelle enthalten,
            oder sehe ich das falsch?

            Korrekt ja, aber mieser Stil.

            Tabellen oder Divs.
            Zur Not noch Tabellen in Divs.

            Aber Divs in Tabellen haut dem Faß den Boden raus ;)

            Ciao,

            Harry

            --
              Intelligenz ist nicht zwingend etwas positives.
              Man weiß erst, was man hatte, wenn man es verloren hat.
            1. Merhaba!

              A-a-aber ich habe doch keine <div>s in Tabelle(n)?!

              Iye Günler - Ollie

              --
              Die Welt ist grau.
              Und bunt.
              Content is Quing!
              sh:( fo:| ch:? rl:? br:& n4:( ie:| mo:| va:) de:> zu:) fl:| ss:| ls:[ js:|
          2. Na, das hat aber nicht viel gebracht.

            Wieso? Hast Du einen Parse Error bekommen?

            Nein, aber Dein Layout fällt auseinander.

            PS: Dein HTML-Stil ist gruselig, Tabellenlayout mit <div>s gemischt.

            Valides HTML 4.01 ohne Konflikte.

            Hinter HTML steckt noch ein bißchen mehr als ein Haufen Rechtschreib- und Grammatikregeln, das Ganze hat auch einen Sinn.

            Du hast die Buchstaben zweifelsohne richtig zusammengesetzt, es wäre aber deutlich schöner, wenn die Buchstabengrüppchen in ihrer Aussage auch zusammen passen würden. Eine Tabelle ist nicht für Layoutzwecke gedacht, ein <div> nicht für einen Zwei-Zentimeter-Abstand. Ersteres wäre (gewohnheitsmäßig) zu verschmerzen, letzteres hat bei mir aber doch ein wenig Erstaunen ausgelöst.

            In dieser Umgebung wirkt der Hinweis auf korrekten HTML- und CSS-Code auf mich etwas sonderbar; vielleicht, weil ich die HTML- & CSS-Strategen bisher immer als Verfechter der reinen Lehre über die Trennung von Inhalt und Layout gehalten habe - und das ist bei Dir nun überhaupt ganz und gar nicht der Fall.

            Gruß,
              soenk.e

            1. Merhaba!

              Nein, aber Dein Layout fällt auseinander.

              Sagst Du mir, wo bzw. in welcher Konfiguration?

              Hinter HTML steckt noch ein bißchen mehr als ein Haufen Rechtschreib- und Grammatikregeln, das Ganze hat auch einen Sinn.

              Du hast die Buchstaben zweifelsohne richtig zusammengesetzt, es wäre aber deutlich schöner, wenn die Buchstabengrüppchen in ihrer Aussage auch zusammen passen würden. Eine Tabelle ist nicht für Layoutzwecke gedacht,

              http://www.edition-w3.de/TR/1999/REC-html401-19991224/struct/global.html#edef-DIV
              ließ mich denken, dies tun zu dürfen. Natürlich gibt es
              (durch minimale Änderungen erreichbare) reinere Lösungen,
              zugegeben.

              ein <div> nicht für einen Zwei-Zentimeter-Abstand.

              Wieso? Kannst Du mir das begründen?

              In dieser Umgebung wirkt der Hinweis auf korrekten HTML- und CSS-Code auf mich etwas sonderbar; vielleicht, weil ich die HTML- & CSS-Strategen bisher immer als Verfechter der reinen Lehre über die Trennung von Inhalt und Layout gehalten habe - und das ist bei Dir nun überhaupt ganz und gar nicht der Fall.

              Somehow werde ich das Gefühl nicht los, dass Du mich fälschlicher-
              weise in eine Gruppe von Menschen einordnest, der ich definitiv
              nicht angehöre. Wie kommt das?

              Iye Günler - Ollie

              --
              Die Welt ist grau.
              Und bunt.
              Content is Quing!
              sh:( fo:| ch:? rl:? br:& n4:( ie:| mo:| va:) de:> zu:) fl:| ss:| ls:[ js:|
              1. Nein, aber Dein Layout fällt auseinander.

                Sagst Du mir, wo bzw. in welcher Konfiguration?

                Vorhin gingen die Felder noch in die Breite, wenn man ein zu langes Wort eingegeben hat. Inzwischen hast Du das offensichtlich mit einer festen Breite der Tabellenzelle blockiert. Allerdings wäre das Aufbrechen des Textes ab einer bestimmten Position unter Umständen besser geeignet, als den Text abzuschneiden.

                Hinter HTML steckt noch ein bißchen mehr als ein Haufen Rechtschreib- und Grammatikregeln, das Ganze hat auch einen Sinn.

                Du hast die Buchstaben zweifelsohne richtig zusammengesetzt, es wäre aber deutlich schöner, wenn die Buchstabengrüppchen in ihrer Aussage auch zusammen passen würden. Eine Tabelle ist nicht für Layoutzwecke gedacht,

                http://www.edition-w3.de/TR/1999/REC-html401-19991224/struct/global.html#edef-DIV
                ließ mich denken, dies tun zu dürfen.

                Bevor wir uns hier verrennen: Das ist keine Frage von "dürfen" und "nicht dürfen". Es ist eine Frage des Willens.

                In Deiner genannten Seite ist in der Tat eine Tabelle zu sehen:

                Name:    Peter
                  Vorname: Lustig
                  Alter:   63

                Das sind tabellarische Daten, erkennbar dadurch, daß dort jeweils ein Spaltenkopf und dazu Spaltendaten vorhanden sind (diese Tabelle ist horizontal orientiert, deshalb hier: Spalte=Zeile).

                Du benutzt die Tabellenkonstruktion lediglich, um drei Textblöcke untereinander zu setzen:

                Dies ist ein Titel.
                  Dies ist der Text zum Titel.
                  Dies ist die Datumszeile.

                Das hat aber mit Tabellen nichts zu tun. Der Unterschied mag marginal erscheinen, ist aber vorhanden.

                Natürlich gibt es
                (durch minimale Änderungen erreichbare) reinere Lösungen,
                zugegeben.

                Die "minimale Änderung", auf die ich hinaus will, wäre zum Beispiel

                <hx>Dies ist ein Titel.</hx>
                  <p>Dies ist der Text zum Titel.</p>
                  <p>Dies ist die Datumszeile.</p>

                Man könnte alternativ auch etwas mit <dd> und <dt> zaubern. In jedem Fall: <table> raus, Struktur rein. Du hast einen Fließtext mit Absätzen, da hat eine Tabelle nichts zu suchen.

                ein <div> nicht für einen Zwei-Zentimeter-Abstand.

                Wieso? Kannst Du mir das begründen?

                a) Möchtest Du einen Abstand haben, dann setze diesen Abstand mittels margin oder padding an die Elemente, zwischen denen der Abstand erscheinen soll. Das ist überhaupt kein Problem, somit ist der Einsatz von "<div class='spacer'></div>" überflüssig.

                b) HTML-Elemente umfassen Teile eines Dokuments. Ein Leerraum bzw. ein "Nichts" ist kein Teil, somit ist Dein "<div class='spacer'></div>" auch ein fragwürdiger Einsatz von eines HTML-Elements.

                In dieser Umgebung wirkt der Hinweis auf korrekten HTML- und CSS-Code auf mich etwas sonderbar; vielleicht, weil ich die HTML- & CSS-Strategen bisher immer als Verfechter der reinen Lehre über die Trennung von Inhalt und Layout gehalten habe - und das ist bei Dir nun überhaupt ganz und gar nicht der Fall.

                Somehow werde ich das Gefühl nicht los, dass Du mich fälschlicher-
                weise in eine Gruppe von Menschen einordnest, der ich definitiv
                nicht angehöre. Wie kommt das?

                Ich weiß nicht, auf welche Gruppe Du hinaus willst, aber wie ich bereits schrieb: Von Leuten, die sich um die HTML- und CSS-Regeln kümmern, hatte ich beschriebene andere Einstellung erwartet.
                Das soll jetzt bitte keine Abwertung sein, mir ist es letztenendes wurscht, aber es hat mich gewundert, einen Risotto-Coder anzutreffen, der den HTML-Validator kennt und nutzt :)

                Gruß,
                  soenk.e

                1. Merhaba!

                  Man könnte alternativ auch etwas mit <dd> und <dt> zaubern. In jedem Fall: <table> raus, Struktur rein. Du hast einen Fließtext mit Absätzen, da hat eine Tabelle nichts zu suchen.

                  -> ToDo. Das waren die mit minimalem Aufwand verbundenen
                     Änderungen.

                  a) Möchtest Du einen Abstand haben, dann setze diesen Abstand mittels margin oder padding an die Elemente, zwischen denen der Abstand erscheinen soll. Das ist überhaupt kein Problem, somit ist der Einsatz von "<div class='spacer'></div>" überflüssig.
                  b) HTML-Elemente umfassen Teile eines Dokuments. Ein Leerraum bzw. ein "Nichts" ist kein Teil, somit ist Dein "<div class='spacer'></div>" auch ein fragwürdiger Einsatz von eines HTML-Elements.

                  Full ack. ->ToDo.

                  Das soll jetzt bitte keine Abwertung sein, mir ist es letztenendes wurscht, aber es hat mich gewundert, einen Risotto-Coder anzutreffen, der den HTML-Validator kennt und nutzt :)

                  Aua. Abgesehen davon, dass ich ursprünglich eigentlich um
                  sicherheitstechnische Inspiration gebeten hatte, muss ich Dir
                  in praktisch allen Punkten Recht geben. :o/
                  Größtenteils habe ich das book in einer Nacht- und Nebel-Aktion
                  geschrieben, deswegen ist einiges nocht nicht ausgereift.
                  Auf jeden Fall danke ich Dir für Deine Tipps.

                  Ollie

                  --
                  Die Welt ist grau.
                  Und bunt.
                  Content is Quing!
                  sh:( fo:| ch:? rl:? br:& n4:( ie:| mo:| va:) de:> zu:) fl:| ss:| ls:[ js:|
  3. Hallo Jester,

    Hab jetzt keinn Eintrag gemacht, wollte dir aber nur ebe sagen, dass das
    Layout im IE sich von dem in Opera/Mozilla sehr unterscheidet (links angeordnet
    anstatt zentriert).
    Da ist also noch Nachbesserungsbedarf :)

    Grüße
      David

    --
    >>Nobody will ever need more than 640k RAM!<<
    1981 Bill Gates
    1. Hai David,

      Was genau ist links angeordnet, statt zentriert?
      Das gesamte Display, der innere Bereich, oder
      die einzelnen Einträge?

      LG - Ollie

      --
      Die Welt ist grau.
      Und bunt.
      Content is Quing!
      sh:( fo:| ch:? rl:? br:& n4:( ie:| mo:| va:) de:> zu:) fl:| ss:| ls:[ js:|
    2. Merhaba!

      Layout im IE sich von dem in Opera/Mozilla sehr unterscheidet (links angeordnet
      anstatt zentriert).
      Da ist also noch Nachbesserungsbedarf :)

      ...Fixed. Danke!

      Iye Günler - Ollie

      --
      Die Welt ist grau.
      Und bunt.
      Content is Quing!
      sh:( fo:| ch:? rl:? br:& n4:( ie:| mo:| va:) de:> zu:) fl:| ss:| ls:[ js:|
      1. Hallo Jester,

        Ich hab grad nochmal reingeschaut. Die Eintragsseite ist ebenfalls nicht
        identisch. Hier ists nun nicht so schlimm wie zuvor die ganze Verschiebung.
        Jetzt ist nur die Textarea etwas Ticken größer als die Input-Felder.
        Zude finde ich persönlich es nicht so schön, wenn die Felder rechts bis an
        den Rand der Tabelle reichen (und links neben dem Text aber etwas "Luft" ist.
        Als zweites sei mein Eintrag zu bachten, ich würde noch einen Abfang für
        leere Postings
        ( if (empty(trim($text))) { echo "Du musst schon was schreiben."; } )
        oder so hinzufügen. Ich konnte gerade einfach einen Text bestehend aus mehreren
        Leerzeichen eintragen.

        Grüße
          David

        --
        >>Nobody will ever need more than 640k RAM!<<
        1981 Bill Gates
        1. Merhaba David!

          Hallo Jester,

          Ich hab grad nochmal reingeschaut. Die Eintragsseite ist ebenfalls nicht
          identisch. Hier ists nun nicht so schlimm wie zuvor die ganze Verschiebung.
          Jetzt ist nur die Textarea etwas Ticken größer als die Input-Felder.

          --> ToDo!

          Zude finde ich persönlich es nicht so schön, wenn die Felder rechts bis an
          den Rand der Tabelle reichen (und links neben dem Text aber etwas "Luft" ist.

          ...Fixed.

          Als zweites sei mein Eintrag zu bachten, ich würde noch einen Abfang für
          leere Postings
          ( if (empty(trim($text))) { echo "Du musst schon was schreiben."; } )
          oder so hinzufügen. Ich konnte gerade einfach einen Text bestehend aus mehreren
          Leerzeichen eintragen.

          Hmmm, _damit_ habe ich nicht gerechnet...
          ...Fixed.

          Danke Dir!

          Iye Günler - Ollie

          --
          Die Welt ist grau.
          Und bunt.
          Content is Quing!
          sh:( fo:| ch:? rl:? br:& n4:( ie:| mo:| va:) de:> zu:) fl:| ss:| ls:[ js:|
  4. Holladiewaldfee,

    das Design zu 'zerschießen'

    Du hast ein Problem mit neuen Zeilen ... ;)

    Ciao,

    Harry

    --
      Intelligenz ist nicht zwingend etwas positives.
      Man weiß erst, was man hatte, wenn man es verloren hat.
    1. Hallo, Harry!

      Du hast recht ;}, ich hatte nur die <br (/)>s entfernt,
      aner die /ns vergessen.
      ...Fixed.

      Iye Günler - Ollie

      --
      Die Welt ist grau.
      Und bunt.
      Content is Quing!
      sh:( fo:| ch:? rl:? br:& n4:( ie:| mo:| va:) de:> zu:) fl:| ss:| ls:[ js:|
  5. Hallo!

    das verwenden von strip_tags() (Siehe http://de2.php.net/strip-tags) an den richtigen stellen könnte die Optik verbessern...

    Es sei denn, da sollen HTML Tags angezeigt werden...

    MfG
    S. Preiß

    1. Merhaba!

      Hmmm, ich wollte dem Eintragenden so viele Freiheiten
      wie möglich lassen.

      Danke auf jeden Fall!

      Iye Günler - Ollie

      --
      Die Welt ist grau.
      Und bunt.
      Content is Quing!
      sh:( fo:| ch:? rl:? br:& n4:( ie:| mo:| va:) de:> zu:) fl:| ss:| ls:[ js:|
    2. Moin!

      das verwenden von strip_tags() (Siehe http://de2.php.net/strip-tags) an den richtigen stellen könnte die Optik verbessern...

      Es sei denn, da sollen HTML Tags angezeigt werden...

      strip_tags() ist eine dumme Funktion. Sie löscht alles, was zwischen den Zeichen < und > liegt. Wenn ein Gästebucheintrag nun diese Zeichen ohne die Absicht, HTML-Tags einzugeben, verwendet, werden Teile des Eintrags gelöscht.

      Der zweite Satz aus dem oberen Absatz würde dann eben lauten:
      "Sie löscht alles, was zwischen den Zeichen  liegt."

      Und das ist mit Sicherheit ganz böse.

      - Sven Rautenberg

      --
      SELFTREFFEN 2003 - http://selftreffen.kuemmi.ch/
      ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|