[PHP] Tillåta endast vissa html taggar.

Permalänk
Medlem

[PHP] Tillåta endast vissa html taggar.

Tjenare!

Håller på att programmerar ett system, som inefattar bilder som användarna skall få kommentera. Tidigare gjorde jag somså att jag filtrerade bort alla javascript och all html.

Men nu vill jag tillåta användandet av <p> och <b>. Hur ska jag lösa detta?, jag vill ju nämligen att de andra taggarna fortfarande skall "filtreras bort".

Någon som har något tips eller någon ide?

/MVH Tomas

Visa signatur

//Toombass

Permalänk
Medlem

Jag antar att du omvandlar alla html tecken till "html-encoding", alltså så "<" blir till "<" osv...

i så fall är det bara att köra:

$kommentar = str_replace(array("<p>", "</p>", "<b>", "</b>"), array("<p>", "</p>", "<b>", "</b>"), $kommentar);

Permalänk
Medlem

<?php echo strip_tags($text, '<p><b>'); ?>

Visa signatur

Brass knuckles and a 2x4

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av jonasc

<?php echo strip_tags($text, '<p><b>'); ?>

Skulle rekommendera (inget fel på koden, mer ett påpekande till trådskaparen) att man tillåter åtminstone <strong> (eftersom <b> är deprecated) och helst <em>/<i> också.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av You
eftersom <b> är deprecated

Vart?

Och om man ska använda strip_tags måste man se till att all kod man kör igenom den är valid HTML, annars kanske den gör fel.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av cic
Vart?

Fel av mig, inte officiellt deprecated men i princip är den det eftersom man rekommenderas använda semantisk kod, och b är inte det. (B = Bold => icke-semantisk, strong = Stark betoning => Semantisk)

Permalänk

Jag rekommenderar att du inte använder strip_tags då den skiter i attributer. Någon vänligt sinnad person kan lägga till otrevliga javascript och annat i elementen. Istället skulle jag använt preg_replace() med en väldigt strikt pattern (ta en titt på http://php.net/pcre samt http://regular-expressions.info )

Permalänk
Medlem

Okej!, tack för alla tips!

Visa signatur

//Toombass

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av vigge89
Jag rekommenderar att du inte använder strip_tags då den skiter i attributer. Någon vänligt sinnad person kan lägga till otrevliga javascript och annat i elementen. Istället skulle jag använt preg_replace() med en väldigt strikt pattern (ta en titt på http://php.net/pcre samt http://regular-expressions.info )

Bra poäng. XSS är en sån jävla bitch!

Visa signatur

Brass knuckles and a 2x4