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?
6
A
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 diallowable_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.
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.
+1 per quoting strip_tags() note –
Thx! Sembra che htmlpurifier sia la strada da percorrere. Giusto per chiarire; htmlpurifier previene xss, iniezioni SQL e tutti gli altri codici pericolosi? – Michael
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) * –