Domanda

Dopo aver implementato le mie funzioni Disinfettare (in base alle specifiche richieste), il mio capo ha deciso di modificare l'ingresso accettato. Adesso vuole mantenere un po 'tag specifico e dei suoi attributi. Ho suggerito di implementare un linguaggio BBCode-like, che è imho più sicuro ma lui non vuole, perché sarebbe di molto lavoro.

Questa volta vorrei mantenere le cose semplici in modo da non lo ucciderò la prossima volta che mi chiede di cambiare di nuovo questa cosa. E so che lo farà.

E 'sufficiente usare prima il strip_tags con il parametro tag per preservare e poi htmlentities ?

È stato utile?

Soluzione

strip_tags non comporta necessariamente contenuti sicuri. strip_tags seguito da htmlentities sarebbe stata al sicuro, nel senso che tutto ciò HTML-encoded è sicuro, ma non ha alcun senso.

In entrambi l'utente sta inserendo testo semplice, nel qual caso dovrebbe essere output utilizzando htmlspecialchars (a preferenza di htmlentities), o stanno inserendo HTML markup, nel qual caso è necessario analizzare in modo corretto, il fissaggio e la rimozione di markup rotto elementi / attributi che non sono in una whitelist di sicurezza.

Se questo è ciò che si desidera, utilizzare una libreria esistente per farlo (ad es. htmlpurifier ). Perché non è un compito banale e se si sbaglia avete dato voi stessi buchi di sicurezza XSS.

Altri suggerimenti

È possibile continuare a utilizzare i tag specifici strip_tags con la seguente sintassi: strip_tags($text, '<p><a>');

Questo frammento sarebbe a nudo tutti i tag tranne p e a. Gli attributi sono conservati per i tag che hai consentiti (p e a nell'esempio di cui sopra).

Tuttavia, questo non significa che gli attributi sono sicuri. Vuole attributi specifici o se egli vuole mantenere tutti sul tag consentiti? Per il primo caso, si avrebbe bisogno di analizzare ogni tag e rimuovere quelli desiderati, sanificazione dei valori. Per mantenere tutti gli attributi sui tag consentiti, è ancora necessario per sterilizzare loro. Suggerirei esecuzione htmlentities sui valori degli attributi per disinfettare loro (per la visualizzazione, vorrei assumere).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top