Antworten auf deine Fragen:
Neues Thema erstellen

Kommentatfunktion

Mew

Aktives Mitglied

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?
 

blackout

Schaf im Wolfspelz

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.
 

Mew

Aktives Mitglied

AW: Kommentatfunktion

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

blackout

Schaf im Wolfspelz

AW: Kommentatfunktion

string mysql_real_escape_string ( string $unescaped_string [, resource $link_identifier ] )

Maskiert spezielle Zeichen im unescaped_string unter Berücksichtigung des aktuellen Zeichensatzes der Verbindung, so dass das Ergebnis ohne Probleme in mysql_query() verwendet werden kann. Wenn Sie Binärdaten einfügen wollen, müssen Sie die Funktion auf jeden Fall verwenden.
PHP: mysql_real_escape_string - Manual

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

Mew

Aktives Mitglied

AW: Kommentatfunktion

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

Code:
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.
 

blackout

Schaf im Wolfspelz

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:
$Query = 'SELCET * FROM Tabelle WHERE ID = '.$_GET['id'];
mysql_query($Query);
Was du zulassen willst sind letztendlich nur Integer-Werte. Ich persönlich mache das immer rabiat mit expliziter Typenkonvertierung à la $_GET['id'], alternativ kannst du auch 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:
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.068
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben