2010-02-23 14 views
12

Attualmente sono in un progetto con un frontend PHP. Siamo piuttosto preoccupati per la sicurezza, perché avremo un sacco di utenti e siamo un obiettivo attraente per gli hacker. I nostri utenti sono in grado di inviare contenuti formattati in HTML che sono visibili agli altri utenti in seguito. Questo è un grosso problema perché siamo vulnerabili per l'intero set di attacchi XSS. Stiamo filtrando nel miglior modo possibile, ma la varietà di vettori di attacco è piuttosto grande.Esistono buoni filtri HTML basati su PHP?

Quindi, sto cercando soluzioni di sanitizzazione/filtraggio HTML basate su PHP. Le soluzioni commerciali vanno bene (anche preferite). Attualmente stiamo usando un purificatore HTML modificato, ma non siamo soddisfatti dei risultati.

Quali sono alcune buone librerie/strumenti in grado di filtrare parti dannose di HTML?

È bello avere ad esempio la consapevolezza HTML5, che diventerà un incubo per la sicurezza una volta disponibile "in the wild".

Aggiornamento: Stiamo eseguendo una configurazione approfondita di HTML Purifier. Sembra che il vecchio framework che abbiamo usato prima non fosse affatto configurato. Ora i risultati sembrano molto migliori.

+1

Qualche possibilità è possibile utilizzare un linguaggio di markup semplificato (come lo stackoverflow utilizza con Markdown) che consente a ** tu ** di decidere quali tag effettivamente vengono presentati? – Nicole

+0

Inoltre, penso che ci siano 6 voti per la domanda e nessun voto per nessuna delle 5 risposte (in questo momento), rafforza l'idea che non ci siano buone soluzioni a questo problema con l'approccio del filtro HTML. – Nicole

+0

Siamo a favore dell'uso di alcuni linguaggi di "markup" semplificati, ma non possiamo controllare tutti i possibili canali in entrata e alcuni clienti utilizzeranno software che è in grado di html o testo in chiaro e la possibilità di convincerli e alcuni stakeholder sul nostro lato che questo è un approccio usabile è piuttosto piccolo :-( –

risposta

7

progetto HTML Purifier

Personalmente ho avuto ottimi risultati con il HTML Purifier project

E 'altamente personalizzabile e ha un enorme base di codice. L'unico problema è caricare i file sul tuo server.

Sei sicuro di non aver avuto un problema di configurazione con l'installazione? Poiché il depuratore non dovrebbe lasciare passare alcun tag HTML se configurato correttamente.

Dal sito web:

HTML Purifier è una libreria filtro di HTML conforme agli standard scritto in PHP. HTML Purifier non solo rimuovere tutto codice dannoso (meglio conosciuto come XSS) con un fondo sottoposto a revisione contabile,
whitelist ancora permissiva sicuro, sarà anche assicurarsi che i documenti sono conforme agli standard, qualcosa che solo ottenibile con un approccio globale conoscenza delle specifiche del W3C.
Stanco dell'utilizzo di BBCode a causa dello scenario attuale di o di filtri HTML non sicuri non protetti? Hai un editor WYSIWYG ma non sei mai stato in grado di usare ? Cerchi componenti di alta qualità, conformi agli standard, open source per quell'applicazione che stai costruendo?HTML Purifier è per tu!

Ho scritto un articolo su come utilizzare lo HTML purifier library with CodeIgniter qui.

Forse aiuterà con dare un altro tentativo:

// load the config and overide defaults as necessary 
$config = HTMLPurifier_Config::createDefault(); 
$config->set('HTML', 'Doctype', 'XHTML 1.0 Transitional'); 
$config->set('HTML', 'AllowedElements', 'a,em,blockquote,p,strong,pre,code'); 
$config->set('HTML', 'AllowedAttributes', 'a.href,a.title'); 
$config->set('HTML', 'TidyLevel', 'light'); 
+1

Solo per notare, l'OP ha detto: "Attualmente siamo utilizzando un ** purificatore html ** modificato, ma ** non siamo soddisfatti dei risultati **. " –

+2

È strano che il purificatore HTML non funzioni per il richiedente. riprendi che la configurazione sia impostata in modo errato ad un certo punto. –

+1

È possibile che possiamo aggirare alcuni problemi con un'ulteriore configurazione, ma abbiamo avuto alcuni casi in cui i nostri giocatori di penetrazione l'hanno escluso. Attualmente il depuratore html è la nostra migliore scommessa, ma speravo di trovare un'altra soluzione lucida di gloria qui ;-) –

1

kses funziona bene. Puoi facilmente specificare quali elementi consentire e non consentire, quindi renderlo 'HTML5-aware' sarebbe solo questione di impostare un array.

WordPress utilizza, quindi credo che sia abbastanza sicuro;)

+0

html 5 sarà un po 'più complicato, in quanto introdurrà per esempio attributi sui tag di chiusura ecc. E l'autore afferma sulla pagina sourceforge che non ha tempo per mantenere il pacchetto, che è un interruttore: -/ –

1

posso davvero consigliare kses per il filtraggio HTML. In realtà questo è ciò che usa wordpress. È gratuito e open source.

+0

Se kses è usato con WordPress DEVE essere buono.) –

+0

Ma non è mantenuto attivamente :-( –

2

CodeIgniter ha un eccellente filtro XSS, si potrebbe strappare fuori dal sistema/librerie/file Input.php se si voleva come un autonomo funzione.

+0

Lo vedrò –

+0

Hmm, temo che questo non soddisfi i nostri requisiti non funzionali su "straniero" codice. Rippare il codice da un altro framework può essere apprezzato dal PM ;-) –

1

È possibile utilizzare la soluzione corrente e aggiungere iframe con URL di base diversi per mostrare il contenuto. La modifica dell'URL di base sull'iframe disabilita l'accesso dal codice JavaScript interno alla pagina principale. Cioè, se il tuo URL è http://www.yoururl.com/thread/500 puoi usarlo nell'iframe per mostrare il contenuto, qualcosa come: http // yoururl.com/thread/500/coment/1, http // yoururl.com/thread/500/coment/2.

L'URL di base che è possibile impostare può dipendere dalla configurazione DNS/host.

Non è una soluzione per risolvere il problema ma per saltare sopra, anche se può essere utile fino a trovare qualcos'altro.

+0

Questa non è davvero un'opzione a causa di diversi vincoli. Scusa :) –

1

Ho usato questa classe prima e avuto un successo abbastanza decente: http://www.phpclasses.org/browse/package/2189.html

+0

Sembra che non sia più mantenuto.L'ultima uscita era il 2005 e ci sono stati molti nuovi exploit che molto probabilmente non sono coperti da questo. –

0

HTMLPurifier probabilmente funziona, ma lasciatemi dire che la struttura delle cartelle è troppo complicata e pomposo. Centinaia di righe di commenti, una cartella chiamata "test", un file di licenza, file read-mes e info, immagini, un'altra cartella per il smoketesting (che è decisamente offensivo), extra, config, benchmark e per completare il tutto, circa 10 diverse modalità di compatibilità CMS, testimonianze sul loro sito web, versioni complete, versioni lite, husky, moderatamente paffuto, sindrome di down e l'intero spettro di variazioni programmatiche politicamente corrette.

Problemi correlati