tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
8
ZUGRIFFE
456
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    nchristoph nchristoph ist offline Mitglied Platin
    Registriert seit
    Sep 2007
    Beiträge
    527
    Hallo,

    ich arbeite gerade Übungsweise an einem kleinen CMS.

    Ich hab da eine kleine Sicherheitstechnische Frage:

    Ich gebe den Content so aus:

    PHP-Code:
    echo stripslashes(nl2br($row['b_content'])); 
    Jetzt werden aber alle HTML Tags bei der Eingabe gelöscht:

    PHP-Code:
    $text htmlentities(strip_tags(mysql_real_escape_string($_POST['text']))); 
    Dadurch kann ich den Text nicht formatieren.

    Wie kann ich das jetzt absichern und trotzdem den Text schön formatieren?

    Vielen Dank im voraus.

    Grüsse
     

  2. #2
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hi,

    Mein Grundsatz ist: Alles kommt in die Datenbank, möglichst genau so wie ein Benutzer die Daten vorgelegt hat. Erst bei der Ausgabe wird gefiltert und eventuell angepasst. Also reines mysql-Escaping, keine HTML-Tags oder so löschen.

    Wenn es ein CMS ist, bei dem die Seiten nur durch den Betreiber oder einer berechntigten Person geändert werden können, dann würde ich die Tags nicht rausstreichen. Nur bei Eingaben / Ausgaben, die von normalen Benutzern geändert werden können, würde ich die Filterung einbauen.

    Eine Alternative dazu, wenn du die Tags wirklich löschen willst, wäre BBCode, ähnlich wie hier im Forum oder Wikicode wie auf Wikipedia. Allerdings schränkst du somit die Anpassbarkeit deiner CMS-Seiten sehr stark ein.

    Gruß,
    BK
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  3. #3
    nchristoph nchristoph ist offline Mitglied Platin
    Registriert seit
    Sep 2007
    Beiträge
    527
    Es ist halt ein Übungscms, wo ich genau auf solche Sachen draufkommen will.

    Ich hab zwar mittlerweile ein, für mich zumindest, sehr grosses PHP Wissen, was ich auch zu einem grossen Teil den Leuten auf tutorials.de zu verdanken habe(*Schleimmodus aus*:P), mir fehlen allerdings die 'Eier' es auch anzuwenden weil ich mir einfach nicht sicher bin, ob der Code so wie ich ihn schreibe richtig, sicher und performant ist.

    Danke für die Antwort, ich werds gleich mal umsetzten.

    Kurze OT Frage: Welchen WSIWYG Editor würdest du empfehlen? Ich hab imo TinyMCE im Auge, aber kann ich den auch verwenden, wenn ich ein CMS zum DL anbiete oder muss ich da eine Lizenz kaufen?
     

  4. #4
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hi,

    löblich dass du dich damit weiter beschäftigen willst und dass du das nicht im Alleingang probierst

    TinyCME steht unter der LGPL, das heißt du kannst den Source weitergeben, ja.

    Hmm, mit WYSIWYG Editoren hab ich noch nicht viel Erfahrung, ich war mit dem CKEditor bisher aber recht zufrieden. Auf der Wikiseite stehen noch andere, kannst ja mal Vergleichen und deine Erfahrungen hier so mitteilen

    Gruß
    BK
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  5. #5
    kourty kourty ist offline Mitglied Bronze
    Registriert seit
    Apr 2011
    Beiträge
    40
    Ich kann dir TinyMCE sehr empfehlen! Da gibt es auch ein Plugin, das TinyMCE zu einem BBCode Editor werden lässt, wenn du was das angeht weiter machen willst.
     

  6. #6
    nchristoph nchristoph ist offline Mitglied Platin
    Registriert seit
    Sep 2007
    Beiträge
    527
    So ich hab mich nach Intensiver Nachforschung für den TinyMCE entschieden, ist sehr einfach einzubinden und zu warten.

    Andere Frage die wieder OnTopic ist:

    Man soll ja das Verwenden von Requestvariablen bei Includes vermeiden.

    Ich schätze mal, da zählt $_SERVER['DOCUMENT_ROOT'] auch dazu oder?

    Wie könnte ich dann die Pfade für z.b. ein Theme System festlegen?
     

  7. #7
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hi,

    was meinst du mit Requestsvariablen? Grundsätzlich $_GET und $_POST? Oder eher $_REQUEST?

    Meiner Meinung nach ist es egal ob man diese für Includes hernimmt, solange man diese richtig filtert, zum Beispiel über eine Whitelist.

    $_SERVER gehört da nicht dazu, weil die Felder vom Server festgelegt werden und manche vom Client somit nicht verändert werden können. Da gehört auch das DOCUMENT_ROOT dazu.

    Gruß,
    BK
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  8. #8
    nchristoph nchristoph ist offline Mitglied Platin
    Registriert seit
    Sep 2007
    Beiträge
    527
    Das heist, das ich über $_SERVER['DOCUMENT_ROOT'] ohne problem includen kann.

    Danke für die Hilfe, ich melde mich nochmal, falls ich noch Fragen haben sollte.
     

  9. #9
    Avatar von Dr Dau
    Dr Dau Dr Dau ist offline ich wisch hier durch
    Registriert seit
    Feb 2005
    Ort
    hinterm Mond gleich Links
    Beiträge
    6.160
    Blog-Einträge
    4
    Hallo!

    Zitat Zitat von nchristoph Beitrag anzeigen
    Das heist, das ich über $_SERVER['DOCUMENT_ROOT'] ohne problem includen kann.
    Kann man nicht pauschal sagen.
    Es hängt halt auch davon ab wie der Server konfiguriert ist.

    Beispiel:
    Auf einem meiner Linux-Server habe ich mod_userdir aktiviert.
    Der User legt seine Webseiten daher in "/home/Benutzername/public_html" ab.
    Die Seite wird dann mittels "http://hostname/~Benutzername" aufgerufen (in meinem Fall wird die Seite jedoch mittels vHost über "http://anderer-hostname" aufgerufen).
    $_SERVER["DOCUMENT_ROOT"] hingegen verweist auf "/var/www/html" (hier liegen die Seiten die über "http://hostname" aufgerufen werden).
    Da "/home/Benutzername/public_html" und "/var/www/html" jedoch zwei völlig verschiedene Verzeichnispfade sind, kann der User mit $_SERVER["DOCUMENT_ROOT"] nicht auf sein Verzeichnispfad verweisen.
    Hier muss der User also tricksen.
    Ich persönlich bevorzuge, da es sich am einfachsten merken lässt, den Verzeichnispfad in einer Variable anzulegen.

    $_SERVER["DOCUMENT_ROOT"] kann also funktionieren, muss es aber nicht..... und ist deshalb mit einer gewissen Vorsicht anzuwenden.
    Nicht zuletzt aus dem Grunde weil an der Serverkonfiguration ja auch jederzeit Veränderungen vorgenommen werden könnten (im schlimmsten Fall wird man darüber nichtmal informiert ).

    Gruss Dr Dau
     
    Schri-Schra-Schrödi *g*
    mehrspaltiges/zeiliges Seitenlayout mit DIV's und CSS
    Dinge, die mit Tabellen besser klappen als mit CSS
    Ausgabe von Datum/Zeit unabhängig von der Server Zeitzone [php]
    Meine Links zum Thema Linux (Last update: 29.10.2011)
    Kein Busen ist so flach wie das Niveau dieser Party!
    ----
    Alte Weisheit: wer uns in den Arsch kriecht wird beschissen!
    ----
    Ich habe 3 Kinder und kein Geld!
    Warum kann ich nicht keine Kinder haben und 3 Geld?! (Homer Jay Simpson)

Ähnliche Themen

  1. Sicherheit? Wie und was?
    Von BeaTBoxX im Forum PHP
    Antworten: 4
    Letzter Beitrag: 28.04.11, 13:28
  2. Sicherheit?
    Von hhunderter im Forum PHP
    Antworten: 2
    Letzter Beitrag: 10.01.09, 03:03
  3. PHP und sicherheit
    Von Herror im Forum PHP
    Antworten: 0
    Letzter Beitrag: 23.04.08, 19:21
  4. Sicherheit
    Von NCortex im Forum PHP
    Antworten: 5
    Letzter Beitrag: 08.08.07, 12:32
  5. sicherheit
    Von polar im Forum PHP
    Antworten: 1
    Letzter Beitrag: 01.11.02, 02:29