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

raven16

Lieutenant
Dabei seit
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 :)
 

Domi_bas

Lt. Junior Grade
Dabei seit
Okt. 2009
Beiträge
385
Verstehe die Frage nicht so ganz. Gibt es ein Problem mit dem Code?
 

raven16

Lieutenant
Ersteller dieses Themas
Dabei seit
Nov. 2008
Beiträge
580
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.
 

Daaron

Fleet Admiral
Dabei seit
Dez. 2011
Beiträge
13.487
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?
 

raven16

Lieutenant
Ersteller dieses Themas
Dabei seit
Nov. 2008
Beiträge
580
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:

Überkinger

Lieutenant
Dabei seit
Juli 2010
Beiträge
600
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.
 
Top