Pregunta

Estoy tratando de descubrir cuál es la mejor manera de administrar los datos que ingresa un usuario con respecto a etiquetas no deseables que podría insertar:

  • strip_tags () : las etiquetas se eliminan y no se insertan en la base de datos
  • las etiquetas se insertan en la base de datos, pero al leer ese campo y mostrarlo al usuario, usaríamos htmlspecialchars()

¿Cuál es el mejor, y hay alguna desventaja en alguno de estos?

Saludos

¿Fue útil?

Solución

Esto depende de cuál sea su prioridad:

  • si es importante mostrar caracteres especiales de la entrada del usuario (como en StackOverflow, por ejemplo), entonces deberá almacenar esta información en la base de datos y desinfectarla en la pantalla; en este caso, querrá menos use htmlspecialchars () para mostrar la salida (si no es algo más sofisticado)
  • si solo desea comentarios de texto sin formato, use strip_tags () antes de pegarlo en la base de datos, de esta manera reducirá la cantidad de datos que necesita almacenar y el tiempo de procesamiento al mostrar los datos en la pantalla

Otros consejos

  

las etiquetas se insertan en la base de datos, pero al leer ese campo y mostrarlo al usuario, usaríamos htmlspecialchars ()

Esto. Por lo general, desea que las personas puedan escribir menos que signos y signos de unión y que se muestren como tales en la página. htmlspecialchars en cada paso de salida de texto a HTML (ya sea que el texto provenga directamente de la entrada del usuario, o de la base de datos, o de otro lugar por completo) es la forma correcta de lograr esto. Jugar con la entrada es una táctica nada apropiada para lidiar con un problema de codificación de salida.

Por supuesto, necesitará un escape diferente, o parametrización, para colocar texto en una cadena SQL .

Las medidas tomadas para asegurar la entrada del usuario dependen completamente de en qué contexto se están utilizando los datos. Por ejemplo:

  • Si lo está insertando en una base de datos SQL, debe usar declaraciones parametrizadas. El mysql_real_escape_string () de PHP también funciona decentemente.
  • Si va a mostrarlo en una página HTML, entonces necesita quitar o escapar las etiquetas HTML.
  • En general, cada vez que mezcle la entrada del usuario con otra forma de marcado u otro idioma, los elementos de ese idioma deben ser eliminados o eliminados de la entrada antes de ponerlos en ese contexto.

El último punto anterior pasa al siguiente punto: muchos sienten que la entrada original siempre debe mantenerse. Esto tiene mucho sentido cuando, más tarde, decides usar los datos de una manera diferente y, por ejemplo, las etiquetas HTML no son un gran problema en el nuevo contexto. Además, si su sitio está de alguna manera comprometido, tiene un registro de la entrada exacta dada.

Específicamente relacionado con las etiquetas HTML en la entrada del usuario destinada a mostrarse en una página HTML: si hay alguna razón concebible para que un usuario ingrese etiquetas HTML, simplemente escape de ellas. Si no, quítelos antes de mostrarlos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top