PHP Eingabe von Text in Datenbank und Ausgabe von Text in Datenbank

raven16

Lieutenant
Registriert
Nov. 2008
Beiträge
580
Hallo Leute,

das Thema wurde bestimmt schon häufig behandelt, aber irgendwie bekomme ich es nicht auf die Kette.
Was muss man bei der Eingabe in Hinblick auf die Sicherheit des Textes über ein Formular in eine Datenbank beachten und was und Darstellung, um z.B. Zeilenumbrüche richtig darzustellen.

Eingabe:
PHP:
if(strlen($_POST['vorname'])<3) $errorvorname = '<label class="error">&raquo; Vorname: Mindestens 3 Zeichen</label>';
$vorname = mysql_real_escape_string($_POST['vorname']);

Ausgabe:
PHP:
$text = $obj_get_themen->text;
$text = htmlentities($text);
$text = stripslashes($text);
$text = str_replace('{',' ', str_replace('}',' ',str_replace('%',' ',$text))); 
$text = nl2br($text);

Ich habe mir irgendwann mal was bei diesem Quelltext gedacht, aber verstehe nicht mehr, wieso ich das so gemacht habe.

Danke :)
 
Verstehe die Frage nicht so ganz. Gibt es ein Problem mit dem Code?
 
An sich ist das Einzige, was nicht funktioniert, die Zeilenumbrüche, die derzeit nicht bei der Ausgabe des Textes umgesetzt werden.

Und andernfalls wollte ich nur wissen, ob ich im Faktor Sicherheit noch was beachten muss, damit schädlicher Quellcode nicht in und aus meiner Datenbank gelesen wird.
 
definiere "schädlichen Code"
SQL Injections kannst du größtenteils schon mit mysql_real_escape_string abfangen. Wenn du mit prepared statements arbeitest wird das Risiko noch einmal deutlich geringer, dürften dann bei 0 sein.
Oder meinst du schädlcihen HTML-Code? Die einigen problematischen Tags sind <iframe>, <object> und <script>, denn die können Schadcode in die Ausgabe pumpen, z.B. Viren auf Flash- oder Javabasis. <style> sollte man auch entsorgen, damit könnte man das Layout zerballern.

Fragen wir mal anders: Woher kommen deine Eingaben?
 
Hab es selbst herausgefunden mit dem Zeilenumbruch.
Bei der nl2br-Funktion darf man nicht in die gleiche Variable schreiben, die man für die Funktion benutzt.
PHP:
$text = nl2br($text);

Daher musste ich das einfach so machen
PHP:
$text_filtered = nl2br($text);
 
Zuletzt bearbeitet:
raven16 schrieb:
Hab es selbst herausgefunden mit dem Zeilenumbruch.
Bei der nl2br-Funktion darf man nicht in die gleiche Variable schreiben, die man für die Funktion benutzt.
PHP:
$text = nl2br($text);

Daher musste ich das einfach so machen
PHP:
$text_filtered = nl2br($text);

Macht allerdings keinen Sinn, denn $test = steht für das Ergebnis der Funktion. Daher muss ansich auch ein $text = nl2br($text) funktionieren.
 
Zurück
Oben