¿Es Addlashes + htmlentities suficientemente seguro?

1

Tengo addslashes(htmlentities($userInput)) . Se inserta en mi base de datos. (NO es un db de mysql) ¿Es lo suficientemente seguro de xss? ¡Gracias!

    
pregunta Human 16.09.2014 - 21:43
fuente

1 respuesta

3

¿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:

  • no escapa a ' , por lo que fallará para los valores de atributo de comillas simples (agregue los parámetros ENT_QUOTES para corregir)
  • asume el conjunto de caracteres ISO-8859-1 por lo que obtendrá una salida rota si en realidad está tratando con otra cosa como UTF-8 (agregue el parámetro charset para corregir, o, probablemente, más sencillo, use htmlspecialchars que deja no Solo caracteres ASCII)
  • Escapar de HTML es algo que haces cuando estás creando una página HTML. Necesitas 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.
respondido por el bobince 16.09.2014 - 21:56
fuente

Lea otras preguntas en las etiquetas