È strip_tags () orribilmente pericoloso?

12

Uso sempre strip_tags per prevenire gli attacchi XSS, ma oggi ho visto un post che diceva che era orribilmente pericoloso. Come dice il manuale, non controlla l'HTML malformato!

È vero?

Che cosa posso fare per prevenire XSS?

    
posta ALH 23.12.2011 - 16:03
fonte

2 risposte

17

Per evitare XSS è necessario:

  1. Convalida tutti gli input utente che elaborerai (per esempio - se il parametro ID GET dovrebbe essere un numero, assicurati che sia con es. la funzione is_number() di PHP o usando Filtro estensione). Questo non dovrebbe includere solo parametri GET / POST, ma anche nomi di cookie, valori di cookie, intestazioni HTTP, nomi di file caricati ecc. Gli attaccanti possono manipolare le richieste in molti modi. Se devi accettare & visualizzare il contenuto HTML dell'utente (ad esempio nell'applicazione CMS) utilizzare la collaudata HTMLPurifier libreria per filtrare Javascript e amp; altro carico utile XSS e lascia solo HTML pulito e igienizzato.

  2. Durante la visualizzazione del valore utilizza codifica dell'output contestuale (a volte chiamato "escaping"). Esistono diverse regole su come codificare il valore fornito dall'utente se si verifica in:

    • contesto HTML ad es. %codice%
    • contesto degli attributi HTML, ad es. %codice%
    • contesto Javascript ad es. %codice%
    • contesto CSS ad es. %codice%

È preferibile fare riferimento alle regole raccomandate descritte in Foglio trucchi OWASP XSS Prevenzione . Leggilo attentamente e rispettalo: XSS è # 2 rischio per le applicazioni web di oggi, quindi hai davvero bisogno di proteggersi da esso. Vedi anche Video tutorial OWASP su XSS .

    
risposta data 23.12.2011 - 17:22
fonte
4

Dovresti usare la codifica contestuale. Consulta il foglio di imbroglio di prevenzione xss . Devi codificare in modo diverso a seconda di dove si trova l'output. Ad esempio, il seguente input verrà perso da strip_tags, ma causa xss se l'output è nell'attributo value di un input di testo html:  "autofocus onfocus=" alert (1)     

risposta data 23.12.2011 - 17:06
fonte

Leggi altre domande sui tag