sql >> Base de Datos >  >> RDS >> Mysql

¿Es bueno usar htmlspecialchars() antes de insertarlo en MySQL?

Como han señalado otros, la #2 es la respuesta correcta. Déjalo "en bruto" hasta que lo necesites, luego escapa apropiadamente.

Para explicar por qué (y repetiré/resumiré las otras publicaciones), llevemos el escenario 1 a su extremo lógico.

Qué sucede cuando alguien ingresa " ' OR 1=1 <other SQL injection> -- ". Ahora tal vez decidas que debido a que usas SQL debes codificar para SQL (quizás porque no usaste declaraciones parametrizadas). Así que ahora tienes que mezclar (o decidir sobre) la codificación SQL y HTML.

De repente, su jefe decide que también quiere una salida XML. Ahora, para mantener la consistencia de su patrón, también necesita codificar eso.

Siguiente CSV - ¡oh, no! ¿Qué pasa si hay comillas y comas en el texto? ¡Más escapes!

Oye, ¿qué tal una buena interfaz AJAX interactiva? Ahora probablemente desee comenzar a enviar JSON de regreso al navegador, por lo que ahora {, [ etc., todo debe tenerse en cuenta. ¡¡AYUDA!!

Claramente, almacene los datos tal como se proporcionan (sujeto a restricciones de dominio, por supuesto) y codifíquelos de manera adecuada para su resultado en el momento que lo necesite . Tu resultado no es lo mismo que tus datos.

Espero que esta respuesta no sea demasiado condescendiente. Crédito a los demás encuestados.