2012-02-12 4 views
6

Ho una textarea in cui l'utente può scrivere un articolo. L'articolo può contenere testo (grassetto e corsivo), link e video di YouTube. Come faccio ad autorizzare quei determinati tag html e a pubblicare codice di sicurezza xss sicuro?Come consentire determinati tag html?

risposta

11

userei HTMLPurifier, per garantire che si mantiene solo HTML

  • che è valida
  • e solo contiene tag e attributi hai scelto per consentire


dovrei aggiungere che PHP fornisce la funzione strip_tags(), ma non è così buona (quoting):

Poiché strip_tags() in realtà non convalida l'HTML, parziale o tag interrotti può comportare la rimozione di più testo/dati del previsto.

Questa funzione non modifica alcun attributo sui tag che si consentire l'utilizzo di allowable_tags, tra cui lo stile e onmouseover attributi che un utente malizioso potrebbe abusare durante la pubblicazione del testo che verrà mostrato ad altri utenti.

+0

+1 per quoting strip_tags() note –

+0

Thx! Sembra che htmlpurifier sia la strada da percorrere. Giusto per chiarire; htmlpurifier previene xss, iniezioni SQL e tutti gli altri codici pericolosi? – Michael

+1

L'ho usato un paio di volte, per pulire gli input dell'utente e assicurarmi che contenga solo i tag che avevo scelto di consentire; se si scelgono attentamente i tag/gli attributi consentiti, si eviterà l'XSS. Ma non farà nulla sulle Iniezioni SQL: quelle sono un altro problema, che risolverete assicurandovi che ciò che inserite nelle interrogazioni SQL sia sicuro * (gli interi dovrebbero essere interi, le stringhe devono essere debitamente scappate, ... o dovreste utilizzare istruzioni preparate) * –

1

Se si sta cercando una protezione XSS reale, suggerisco di utilizzare HTMLPurifier. Farlo da solo è piuttosto difficile se non impossibile da fare. Ed è destinato ad avere errori (/ buchi) in esso.