htmlentities() no agrega ninguna barra al texto. Las barras son agregadas usando
addslashes(), pero si tienes la directiva
magic_quotes activada en tu php.ini (lo cual es no recomendable) todos los textos llegados por POST o GET tendrán esas barras de escape automáticamente. Para quitarlas usa
stripslashes().
Ahora, no hay que confundir cosas. El tener HTML en un texto que se quiera insertar a una base de datos no es ni más ni menos riesgoso que insertar un texto "normal". Para insertar cualquier dato de forma segura a una base de datos basta con usar
mysql_real_escape_string(). Con eso previenes los ataques de
Inyección SQL (
SQL Injection) sin modificar de manera real los datos que estás insertando. Para mostrarlos luego tienes otros riesgos si tienes HTML. Ahí te podrían ser útiles htmlentities() o
htmlspecialchars() si quieres mostrar el código HTML literalmente, o en todo caso, si necesitas "ejecutar" ese código HTML en el navegador te puedes proteger usando
strip_tags(). Otra cosa a tener en cuenta cuando le das a tus usuarios el poder de manejar el HTML de tu sitio es el
XSS. Para eso también hay funciones que te ayudan a protegerte.
Como ves hay diferentes tipos de riesgos, y para cada uno de ellos hay una solución. No uses indiscriminadamente todas las que encuentras, sino que estúdialas y selecciona aquellas que te vayan a ser útiles para lo que deseas hacer.
Bastante por buscar, eh?