Anzeige

Kommentatfunktion

Kommentatfunktion | PSD-Tutorials.de

Erstellt von Mew, 26.11.2008.

  1. Mew

    Mew Aktives Mitglied

    Dabei seit:
    24.11.2006
    Beiträge:
    252
    Geschlecht:
    männlich
    Ort:
    Berlin
    Kommentatfunktion
    Hallo Leute, ich würde gerne eine Kommentarfunktion für User auf meiner Seite erstellen. Man soll unter den Tutotorials auf meiner Seite Kommentieren können... Wie sollte die DB am besten aussehen? Was muss ich beachten?
     
    #1      
  2. blackout

    blackout Schaf im Wolfspelz

    Dabei seit:
    12.09.2005
    Beiträge:
    3.359
    Geschlecht:
    männlich
    Ort:
    Würzburg
    Kameratyp:
    Rollei 35 S
    Kommentatfunktion
    AW: Kommentatfunktion

    Die Kommentare kommen in eine eigene Tabelle. Wichtig hier sind eine ID für jeden Kommentar (AUTO_INCREMENT PRIMARY KEY) sowie eine Verlinkung mit den Kommentaren vom Typ "is_comment_of_this_article_id"; naja, ab dann kommen nur noch Datenfelder (Name, eMail, Texteintrag, ...).

    Wirklich wichtig ist eigentlich nur, dass du ordentlich gegen SQL-Injections geschützt bist, sprich jede theoretisch wie auch immer vom Benutzer machbare Eingabe muss mit mysql_real_escape_string() maskiert werden.
    Spamschutz ist auch zu empfehlen, sonst läuft dir irgendwann das Ding über, selbst handgeschriebene Formulare sind bei weitem nicht sicher. Zu letzterem hab ich hier ein paar Ideen sowie eine Beispielimplementierung veröffentlicht.
     
    #2      
  3. Mew

    Mew Aktives Mitglied

    Dabei seit:
    24.11.2006
    Beiträge:
    252
    Geschlecht:
    männlich
    Ort:
    Berlin
    Kommentatfunktion
    AW: Kommentatfunktion

    hallo, vielen dank... was hat es mit dem mysql_real_escape_string() aufsich?? kannst du mir das erläutern?
     
    #3      
  4. blackout

    blackout Schaf im Wolfspelz

    Dabei seit:
    12.09.2005
    Beiträge:
    3.359
    Geschlecht:
    männlich
    Ort:
    Würzburg
    Kameratyp:
    Rollei 35 S
    Kommentatfunktion
    AW: Kommentatfunktion

    PHP: mysql_real_escape_string - Manual

    ... wenn du's nicht machst steht jedem Angreifer eine schöne SQL-Hintertür offen.
     
    #4      
  5. Mew

    Mew Aktives Mitglied

    Dabei seit:
    24.11.2006
    Beiträge:
    252
    Geschlecht:
    männlich
    Ort:
    Berlin
    Kommentatfunktion
    AW: Kommentatfunktion

    vielen dank erst einmal... aber irgendwie verstehe ich das noch nicht ganz...
    Also ich habe folgende Befehl:

    Code (Text):
    1. SELCET * FROM Tabelle WHERE ID = '20'
    Was muss ich dann mit mysql_real_escape_string() maskieren... Warum, was bewirkt das dann? Wie könnte eine SQL Injection auf diesen Befehl aussehen, was würde sich machen... Vielen DAnk das mir hier so gut geholfen wird. PHP Manual verstehe ich irgendwie immer nicht so richtig.
     
    #5      
  6. blackout

    blackout Schaf im Wolfspelz

    Dabei seit:
    12.09.2005
    Beiträge:
    3.359
    Geschlecht:
    männlich
    Ort:
    Würzburg
    Kameratyp:
    Rollei 35 S
    Kommentatfunktion
    AW: Kommentatfunktion

    Alles was vom Benutzer kommt muss maskiert werden.

    SELCET * FROM Tabelle WHERE ID = 20
    Wenn die 20 z.B. von index.php?id=20 kommt, kann der Benutzer durch geschickte Manipulation der Zahl verschiedenste ungewollte SQL-Befehle ausführen:
    index.php?id=10; DROP TABLE Tabelle;
    ... wird zu ...
    SELCET * FROM Tabelle WHERE ID = 10; DROP TABLE Tabelle;

    Die SQL-Injection oben ist zwar in PHP nicht machbar, da per mysql_query nur ein Befehl ausgeführt wird (d.h. nach dem ersten ";" wird alles ignoriert), aber es gibt genug andere Möglichkeiten. Bin bzgl. SQL nicht wirklich auf dem Laufenden, von daher kann ich dir dazu nicht mehr sagen.


    Um das zu verhindern, musst du ungewünschte Angaben vom Benutzer abfangen. In deinem Fall oben sieht der PHP-Code wohl in etwa so aus:
    PHP:
    1. $Query = 'SELCET * FROM Tabelle WHERE ID = '.$_GET['id'];
    2. mysql_query($Query);
    Was du zulassen willst sind letztendlich nur Integer-Werte. Ich persönlich mache das immer rabiat mit expliziter Typenkonvertierung à la (int)$_GET['id'], alternativ kannst du auch intval verwenden.

    Für Strings gelten natürlich andere Regeln, hier macht es keinen Sinn irgendwas zu ner natürlichen Zahl zu konvertieren. Da aber im Fließtext auch SQL-Befehle stehen können, muss auch hier maskiert werden, und das geht mit mysql_real_escape_string. Was die Funktion letztendlich macht ist eigentlich nur das Hinzufügen von Backslashes vor riskante Zeichen wie z.B. Anführungszeichen, die eventuell zum Ausführen unerwünschter SQL-Befehle benutzt werden könnten.
    (Schön ist daran auch, dass du dir um solche Zeichen nur beim Speichern Gedanken machen musst; bei der Ausgabe brauchst du also keine Funktion vom Typ mysql_real_unescape_string)
     
    Zuletzt bearbeitet: 27.11.2008
    #6      
  7. Mew

    Mew Aktives Mitglied

    Dabei seit:
    24.11.2006
    Beiträge:
    252
    Geschlecht:
    männlich
    Ort:
    Berlin
    Kommentatfunktion
    AW: Kommentatfunktion

    achso okay vielen dank...
     
    #7      
Seobility SEO Tool
x
×
×