2012-05-21 4 views
6

Eventuali duplicati:
What's the best method for sanitizing user input with PHP?Esiste comunque la possibilità di pulire il codice HTML tramite php che viene salvato in un database?

sto usando TinyMCE per consentire usi di modificare una piccola porzione di una pagina web.

Questo campo viene salvato in un database.

C'è un'espressione regolare che posso usare per pulire il codice HTML in entrata in modo che evita qualsiasi XSS/NULL/goccia TABELLE tipo di attacchi?

L'ho eseguito su testo/numeri di input su riga singola, ecc., Ma non sono sicuro su come procedere quando si riceve una stringa HTML.

risposta

5

È possibile utilizzare le funzioni PHP: striptags e htmlspecialchars:

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

+0

Questo cancellerà il codice HTML prodotto da TinyMCE. Vuole consentire l'HTML, ma rimuovere eventuali minacce XSS. – MrCode

+0

@MrCode è corretto. Non voglio rimuovere alcun tag, basta rimuovere tag pericolosi o javascript. – GT22

2

È possibile utilizzare questo -

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 sto usando e che sta funzionando benissimo. E si può anche utilizzare questa funzione per renderla normale (dopo si tira i dati dal database) -

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; 
}