Buenas a todos, espero que este sea el lugar apropiado para postear mi duda, llevo tiempo informándome sobre la seguridad y es dificil sacar algo en claro (debido a la gran cantidad de información demasiado dispar).
Por lo que he sacado en claro... es que dentro de los métodos que hay para evitar SQLinjection uno de lo más eficaces si no el que más es introducir los datos en la base de datos mediante "prepared statement", porque separa lo que es la sintaxis de la query del valor a introducir...
Supongamos un caso:
Tenemos un textarea que guardaremos en nuestra base de datos (por ejemplo los comentarios de un producto o de una foto) (parto de la base de que con los prepared statment se soluciona el SQLi por lo que ya sólo nos quedaría el posible ataque XSS)... ese comentario puede tener texto malintencionado (o no...) tipo <h1>Hola</h1> o Scripts más molestos como alerts o algo más maliciosos, mi duda viene a que si yo alojé en mi base de datos ese textarea tal cual: "<h1>Hola</h1>"... cuando vaya a mostrarse eso en dicha foto nos fatidiaría.
Para evitarlo yo lo que desde mi ignorancia se me ocurre es usar el htmlspecialchars, para que ANTES de mostrar ese texto por pantalla los caracteres recurrentes a realizarnos ataques XSS se pogan en modo de %gt; y asi en pantalla se mostrará sin problema: "<h1>Hola</h1> sin que ocasione daño alguno.
Es seguro de esta manera que he comentado??? Hay alguna forma de saltarse esta "defensa" o hay ataques que no se tendrían en cuenta así a los que seriamos vulnerables??
He visto que hay sitios que realizan strip_tags.... pero si por cualquier razón nuestro usuario quisiera poner un "<" o algún caracter similar.... entiendo que lo eliminaría y no se mostraría, por lo que no me parece eficaz de ser así.
Disculpad tanta parrafada, espero que alguien con más experiencia pueda arrojarme algo de luz jeje,
Un saludo!