Ich arbeite gerade an einem sehr umfangreichen Member-Script und erweitere dieses, so dass hieraus auch ein CMS für den Benutzer und auch den Admin geschaffen wird.
Jetzt habe ich bei der Eingabe von Daten welche in einer DB gespeichert werden beispielsweise folgenden Befehl:
$profile_title = mysqli_real_escape_string($conn, trim(htmlentities($_POST['ProfileTitle'])));
Die "htmlentities" Anweisung bewirkt, dass alle Sonderzeichen in eine html-Codierung umgewandelt werden (ungeachtet ob die Übergabe an den Server mit utf8 erfolgt). Lasse ich diese htmlentities Konstrukt aus, werden also Sonderzeichen wieder in der Datenbank als Sonderzeichen gespeichert.
Meine Frage ist nun, warum man "htmlentities" überhaupt benutzt und welche Vorteile man daraus zieht?! Oder stammt diese Anweisung noch aus Zeiten, wo mySQL Probleme hatte, Zeichesätze richtig zu codieren und encoden? Wichtig wäre mir auch zu wissen, ob diese Anweisung wichtig zur Verhinderung von sql-injections ist oder damit nichts zu tun hat.
Jetzt habe ich bei der Eingabe von Daten welche in einer DB gespeichert werden beispielsweise folgenden Befehl:
$profile_title = mysqli_real_escape_string($conn, trim(htmlentities($_POST['ProfileTitle'])));
Die "htmlentities" Anweisung bewirkt, dass alle Sonderzeichen in eine html-Codierung umgewandelt werden (ungeachtet ob die Übergabe an den Server mit utf8 erfolgt). Lasse ich diese htmlentities Konstrukt aus, werden also Sonderzeichen wieder in der Datenbank als Sonderzeichen gespeichert.
Meine Frage ist nun, warum man "htmlentities" überhaupt benutzt und welche Vorteile man daraus zieht?! Oder stammt diese Anweisung noch aus Zeiten, wo mySQL Probleme hatte, Zeichesätze richtig zu codieren und encoden? Wichtig wäre mir auch zu wissen, ob diese Anweisung wichtig zur Verhinderung von sql-injections ist oder damit nichts zu tun hat.