Hello Bernd,
der User gibt also irgendwas ein und du gibst es wieder aus. Was der User eingegeben hat, kann Dir eigentlich egal sein und du musst da auch nicht zwingend was ausfiltern. Du musst nur
- beim Speichern in einer DB dafür sorgen, dass der Text korrekt für die DB escaped wird (oder mit einem Prepared Statement gespeichert wird)
- beim Ausgeben auf den Browser dafür sorgen, dass der Text rein als Text dargestellt wird und im Browser keine Effekte auslöst (htmlspecialchars).
Allerdings beißt sich Punkt 2 mit deinem Wunsch, etwas fett darzustellen. Wenn Du den eingegebenen Text durchsuchst und die gefundenen Wörter HTML Elementen einrahmst, würden die von Dir vergebenen HTML Tags ebenfalls von htmlspecialchars maskiert. Du musst also zuerst htmlspecialchars anwenden, und dann die gewünschten Wörter durch Fettschrift-Elemente einrahmen. Ob Du dafür b, em, strong oder mark nimmst, hängt von der semantischen Aussage ab - siehe die entsprechenden Texte im Selfwiki.
Grundsätzlich muss vor jeder Interpretation von Daten, die zu aktiven Handlungen bzw. Einfluss auf aktive Systeme führen kann, der Text geprüft und gefiltert werden.
Das Problem hätte man nicht, wenn man von Anfang an Befehls- und Datenstrom getrennt gehalten hätte und dort nicht "Umschaltmöglichkeiten" geschaffen hätte. Ein Hauptverursacher hierfür ist C mit allen seinen Folgeentwicklungen. Bei Pascal und TurboPascal und seinen Folgeentwicklungen war die Vermischung nicht ohne aktive Programmierung möglich.
Glück Auf
Tom vom Berg
Es gibt nichts Gutes, außer man tut es!
Das Leben selbst ist der Sinn.