2012-05-21 11 views
6

Duplicar posible:
What's the best method for sanitizing user input with PHP?¿Hay alguna forma de limpiar el código HTML a través de php que se guarda en una base de datos?

estoy usando TinyMCE para permitir usos para editar una pequeña porción de una página web.

Este campo se guarda en una base de datos.

¿Hay una expresión regular que pueda usar para limpiar el código HTML entrante por lo que se evitan los tipos de ataques de XSS/NULL/DROP TABLES?

He hecho esto en entradas de una sola línea texto/números, etc., pero no estoy seguro de cómo hacerlo cuando recibo una cadena HTML.

Respuesta

5

Puede utilizar las funciones de PHP: striptags y htmlspecialchars:

http://php.net/manual/en/function.strip-tags.php

+0

Esto borrará el código HTML producido por TinyMCE. Quiere permitir HTML pero elimina cualquier amenaza XSS. – MrCode

+0

@MrCode es correcto. No quiero quitar ninguna etiqueta, solo quitar etiquetas peligrosas o javascripts. – GT22

2

Puede utilizar este -

function safe_sql($obj) 
{ 
    $obj = htmlspecialchars($obj); 
    $obj = str_replace('"',""",$obj); 
    $obj = str_replace("'","'",$obj); 
    $obj = str_replace("`","`",$obj); 
    $obj = mysql_real_escape_string($obj); 
    return $obj; 
} 

lo estoy usando y que está funcionando bien. Y también se puede utilizar esta función para que sea normal (después de extraer los datos de la base de datos) -

function to_Normal($data) 
{ 
    $data = htmlspecialchars_decode($data); 

    $data = str_replace(""",'"',$data); 
    $data = str_replace("'","'",$data); 
    $data = str_replace("`","`",$data); 
    $data = nl2br($data); 
    return $data; 
} 
Cuestiones relacionadas