2011-09-01 15 views
7

Sto scrivendo una funzione di analisi dei commenti in PHP.Perché dovrei usare il BBCode ma non l'HTML nei moduli di commento?

Dal momento che il BBCode non è un vero linguaggio di marcatura, non mi è mai piaciuto lo stile di scrittura.
Quindi offro ai visitatori la possibilità di utilizzare il codice HTML di base nei moduli di commento.
E durante la pubblicazione, PHP controlla i tag/attributi non consentiti e non validi e li sostituisce o li rimuove.

Credo che faccia lo stesso lavoro e produca esattamente lo stesso di BBCode.

Se questo è vero, perché ci sono BBCode? BBcode ha qualche vantaggio rispetto all'HTML?

aggiornamento

come in bianco e nero ha risposto

Se siete sicuri che il vostro filtro HTML è abbastanza sicuro, si dovrebbe andare bene anche se

bene, non sto scrivendo fiducioso il filtro me stesso, ma ci sono alcuni filtri top-rated là fuori come PHP HTML semplice HTML Parser, HTML Purifier, htmLawed ...

Il BBCode è sviluppato da UBB e ancora ampiamente utilizzato, come phpBB.

Gli sviluppatori di UBB/phpBB non sono sicuri delle loro capacità di scrivere un filtro HTML perfetto? (Immagino di no)

Inoltre, come il Markdown che StackOverflow usa ... se HTML + Parser fa il lavoro, perché inventare un altro "linguaggio" comunque? (eccetto per il salvataggio di pochi bit ...)

+2

Markdown è il nuovo markup. – BoltClock

+1

Penso che il markup HTML sia abbastanza facilmente sfruttato e il tuo controllo è un workaround. Gli hacker possono essere abbastanza ingegnosi quando si tratta di trovare buchi di sicurezza;) – knittl

+0

@knittl Quindi questo riguarda me/PHP VS hacker. beh, forse avrei dovuto aggiungere "SE ... il mio sistema di analisi è scritto BENE/STRETTAMENTE". Mi piacerebbe davvero vedere un esempio di hacking contro un modulo html-allowed-comment. – Jon

risposta

2

BBCode elimina il problema che il filtro HTML potrebbe avere bug in modo che il commentatore possa commentare il codice che non dovrebbe commentare. Se sei sicuro che il tuo filtro HTML è abbastanza sicuro, dovresti stare bene comunque.

Un altro problema è che i commenti HTML potrebbero interrompere il layout, ad es. quando il commentatore inserisce una singola chiusura </div> o qualcosa del genere.

+4

No, non lo è. Il parser di BBCode potrebbe avere bug che consentono anche l'XSS. – Quentin

4

Il principale vantaggio è la prevenzione di iniezioni di codice indesiderate. Ecco perché vorrei usare qualcosa come BBCode o Markdown.

Almeno si dovrebbe lavorare con una White-List di tag HTML consentiti e non con la lista nera.

+0

+1 per commento whitelist. –

+3

* Ogni singolo tag (corpo) * può avere uno script allegato agli attributi, ad es. stile. Avrai anche bisogno di una whitelist di nomi attr. – Cheekysoft

1

BBCode è diventato popolare in quanto consente all'utente un accesso limitato a html durante il tentativo di impedire XSS. BBCode è diventato popolare prima là dove soluzioni come HTML Purifier. In tutta la realtà, BBCode e Html Purifier hanno i loro problemi di sicurezza. E 'solo che il BBCode era una soluzione più semplice a questo problema.

0

Utilizzare BBcode + convertire tutti i tag di sinistra in htmlspecialchar sembra essere totalmente XSS gratuito per me. (a meno che il parser di BBcode non sia progettato in modo super cattivo)

In definitiva, entrambi raggiungono lo stesso obiettivo. Attualmente scelgo BBcode perché HTMLpurifier auto strip tag invece di sostituire il Tag sinistro con html specialChar. Almeno nella demo non ho visto la funzione mantenendo il Tag sinistro.

Quindi c'è qualche problema perché vogliamo che l'utente scriva & lt; invece di convertirlo automaticamente in <. E qualche altro problema di pigrizia per convalidare tutti i dati.