[PHP] String mit HTML-Text sicher machen...?

BartTheDevil89

Devilution Media
ID: 87739
L
2 Mai 2006
3.960
103
Hallo,

ich habe einen String in dem HTML-Text vorkommt(String wird von HTML-Editor erstellt). Das Problem nun daran ist, dass ich diesen String ausgeben möchte. Jetzt kann es ja aber sein, dass ein böser User beispielsweise PHP-Code in das Eingabefeld mit eingefügt hat. Würde ich jetzt einfach echo "$str"; machen würde es mir also auch den PHP-Code ausgeben.

Jetzt die Frage: Wie kann ich das richtig absichern? Wie kann ich es schaffen, dass der HTML-Code richtig ausgegeben wird, aber "böse Codes" nicht...oder ist es besser "bösen Code" direkt erstmal aus dem String rauszufiltern. (Ideen?) ;)

Danke für eure Hilfe...
 
äh, wenn du mit echo PHP-Code ausgibst, wo ist Problem? ^^
entweder du hast dich falsch ausgedrückt oder du hast große Defizite im Verständniss

Wenn du HTML-Tags filtern willst, es aber auch erlaubte gibt (sowas löst man dann eigentlich über bbcode) gibt es noch die Funktion strip_tags() welcher man als 2. Parameter eine Whitelist an Tags übergeben kann
 
PHP:
$html = "<html></html>";
$html = str_replace("<", "<", $html);
echo $html;

Die Gefahr, dass PHP-Code ausgeführt wird, ist nicht gegeben.

PHP:
echo "<?die();?>";

erzeugt keinen Programmabbruch.

Trotzdem ist es sinnvoll die obige Ersetzung zu machen, weil auch HTML-Code schadhaft sein kann.
 
Tschuldigung an alle....bin irgendwie mitm falschen Fuß aufgestanden und die Frage war komplett anders gemeint. ;) Aber einen Dank an alle von euch...Hab das Problem selbst gelöst.
 
Auf welcher Grundlage machst du diese Aussage? str_replace() ist sicher um einiges schneller als htmlentities().
Bitte erkläre den Vorteil von htmlentities()

mag sein, dass str_replace schneller ist, aber es ist die unsicherer Methode, denn es gibt noch mehr HTML-Sonderzeichen die escaped werden müssen.
Und wiedermal, warum das Rad neu erfinden, wenn es dafür schon eine Funktion gibt?