2012-02-18 11 views
5

ho trovato all'interno della app "Sinfonia CMS", è molto piccola:Questa funzione è sufficiente per il rilevamento xss?

https://github.com/symphonycms/xssfilter/blob/master/extension.driver.php#L100

e stavo pensando di rubare e usarlo nella mia propria applicazione per disinfettare stringa con HTML per la visualizzazione. Pensi che faccia un buon lavoro?

ps: so che c'è purificatore HTML, ma quella cosa è enorme. Preferirei piuttosto qualcosa di meno permissivo, ma voglio comunque che sia efficiente.


ho testato contro le stringhe da questa pagina: http://ha.ckers.org/xss.html. Ma se fallisce contro "localizzatore XSS 2". Non so come si possa usare quella stringa per hackerare un sito però :)

+1

Dice: "[...] determinerà se * potenzialmente * [è] un attacco XSS". – Gumbo

risposta

7

No, non lo userei. Esistono molti attacchi diversi che dipendono tutti dal contesto in cui sono inseriti i dati. Una singola funzione non li coprirebbe tutti. Se osservi attentamente, in realtà ci sono solo quattro test:

// Set the patterns we'll test against 
$patterns = array(
    // Match any attribute starting with "on" or xmlns 
    '#(<[^>]+[\x00-\x20\"\'\/])(on|xmlns)[^>]*>?#iUu', 

    // Match javascript:, livescript:, vbscript: and mocha: protocols 
    '!((java|live|vb)script|mocha):(\w)*!iUu', 
    '#-moz-binding[\x00-\x20]*:#u', 

    // Match style attributes 
    '#(<[^>]+[\x00-\x20\"\'\/])style=[^>]*>?#iUu', 

    // Match unneeded tags 
    '#</*(applet|meta|xml|blink|link|style|script|embed|object|iframe|frame|frameset|ilayer|layer|bgsound|title|base)[^>]*>?#i' 
); 

Nient'altro è testato. Oltre agli attacchi che questi test non rilevano (falsi positivi), potrebbe anche segnalare alcuni input erroneamente come un attacco (falso negativo).

Quindi, invece di provare a rilevare gli attacchi XSS, assicurati di utilizzare l'igienizzazione corretta.

1

Penso che faccia un buon lavoro per testare le stringhe, almeno questo è quello che posso dire secondo i miei test.

+1

non li disinfetta, questo è solo per il test – thelolcat

+0

Sì, è esattamente quello che intendevo. scusa per qualsiasi confusione. – wadie

Problemi correlati