Tengo addslashes(htmlentities($userInput))
. Se inserta en mi base de datos. (NO es un db de mysql) ¿Es lo suficientemente seguro de xss? ¡Gracias!
¿Para qué sirve addslashes
? No tiene ningún beneficio contra la inyección de HTML, ya que no elimina los caracteres que son especiales para HTML.
Si se pretende que sea una protección contra la inyección de SQL, es ineficaz, especialmente para las bases de datos que no son MySQL y que ni siquiera utilizan la barra invertida como escape en los literales de cadenas SQL. Debe utilizar exclusivamente consultas parametrizadas para obtener datos en consultas SQL sin problemas de inyección de SQL.
htmlentities
está bien contra la inyección en el contenido de texto HTML y los valores de atributo entre comillas dobles. Pero:
'
, por lo que fallará para los valores de atributo de comillas simples (agregue los parámetros ENT_QUOTES
para corregir) htmlspecialchars
que deja no Solo caracteres ASCII) htmlspecialchars()
cada fragmento de texto a medida que caes en HTML porque ese es el punto en el que sabes que el texto debe escaparse. No hagas que el HTML ingrese información entre recibirlo y escribirlo en la base de datos, este es un momento totalmente incorrecto.