Pregunta

estoy experimentando con la creación de un sistema de comentarios. Estoy usando la clase php-oEmbed y purificador HTML . ¿Qué puedo usar el filtro para asegurar que los comentarios son seguros para ser insertado en mi base de datos? Sé que puedes usar PHP filtros como FILTER_SANITIZE_STRING, sino que no debe girarse el HTML en entidades?

Además, si utiliza algo así como el armas de destrucción masiva editor de , ¿usted entonces tiene que usar algo en el lado del cliente, así (como PHP de rebajas ) para asegurarse de que es seguro?

¿Fue útil?

Solución

Básicamente lo que necesita la entrada del usuario desinfectar cada vez que envíe en algún lugar.

Cuando lo pones en su base de datos que necesita para evitar la inyección de SQL citando caracteres especiales SQL (declaraciones preparadas van a hacer esto para usted). Cuando lo envía a un navegador que necesita para escapar caracteres especiales HTML (PHP tiene funciones para hacer esto) para evitar la inyección de scripts.

Puede haber otros lugares donde se necesita para escapar caracteres especiales, también. Por ejemplo, si envía los comentarios a un script Bash en el servidor para hacer algún tipo de procesamiento. En ese caso, lo que se necesita para citar o escapar caracteres especiales Bash-específicos.

Es importante no presupuesto / escapar en la fase equivocada: por ejemplo, no escapan a las entidades HTML cuando lo pones en la base de datos a menos que esté absolutamente seguro de lo que estás haciendo. Es muy fácil escapar accidentalmente las cosas de nuevo cuando lo sacas de la base de datos y se preparan para enviarla a un navegador, o no escapar de las cosas en absoluto si usted está enviando un mensaje de error si falla la conexión de base de datos (esto podría causar una vulnerabilidad XSS ). Hacer su escape en el último momento y lo más probable es evitar estos problemas.

Otros consejos

No es necesario utilizar ningún tipo de filtro para la inyección de SQL. Una solución preferible es utilizar . Por ejemplo, PDO proporciona PDOStatement .

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