Al guardar un dato ingresado por un usuario en una base de datos, siempre recomiendo guardarlo tal y como lo puso originalmente. Para esto, lo único que debemos tener en cuenta en cuanto a seguridad se refiere es protegernos del ataque de
Inyección SQL (
SQL Injection). PHP dispone de una función que asegura nuestro código, y es
mysql_real_escape_string(). Al aplicar esta función a cada dato que deseamos ingresar a la base de datos nos protegemos de forma efectiva de las inyecciones sql
sin modificar el dato ingresado a la base de datos. Es una versión de
addslashes() optimizada para consultas sql.
Ahora, hablando de código HTML. Existen varias formas de protegerse del mismo. Una es usando
htmlentities()/
htmlspecialchars(), como ya te recomendaron más arriba. Lo que hacen estas dos funciones es convertir caracteres usados en el código HTML en entidades imprimibles en pantalla. La primera abarca más que la segunda. En resumen, imprimen el código literalmente en vez de ejecutarlo.
strip_tags() es otra opción, recomendable cuando deseas darle a tu usuario la posibilidad de introducir cierto html "permitido". En este caso también debes tener en cuenta el
Cross-Site Scripting (
XSS).
Como ves, hay riesgos a diferentes niveles, y para cada riesgo hay una manera de protegerse. Usa las opciones necesarias, que no se trata de meter todo lo que uno encuentra indiscriminadamente. En tu caso, creo que basta con usar mysql_real_escape_string() para insertar los datos, y htmlspecialchars() para mostrarlos.