Miglior approccio per la rimozione della vulnerabilità XSS

3

Ho sviluppato un'applicazione Webobjects e ho scoperto che la mia applicazione è vulnerabile a XSS tramite URL, ma non quando input malevoli come <script>alert("hi")</script> viene inserito nei campi modulo.

Quindi, al momento ho utilizzato la tecnica di riscrittura degli URL nel server web Apache per risolvere questo problema.

Ho gestito le seguenti parole chiave javascript: src onload onmouseover onkeypress onfocus alert

Non ne so abbastanza su XSS.

Voglio sapere da esperti qui, questo è l'approccio giusto per risolvere XSS quando l'input per i campi modulo non mostra vulnerabilità?

Si prega di suggerire.

    
posta Novice User 20.04.2012 - 17:49
fonte

2 risposte

7

No. Non dovresti provare a correggere XSS eseguendo la riscrittura degli URL nel tuo server web Apache. Non è un buon modo per farlo, poiché il risultato sarà al massimo fragile. In particolare, se segui il tuo approccio attuale, molto probabilmente ci saranno ancora modi subdoli per sfruttare l'XSS.

Invece, se l'applicazione web ha buchi XSS, aggiusta l'applicazione web dannata . Questo è un problema di sicurezza dell'applicazione; devi sistemarlo fissando l'applicazione. Cercare di ricucire le cose esternamente probabilmente sarà come un setaccio.

P.S. Il tuo elenco di parole chiave è insufficiente. Hai costruito una lista nera e, come ogni altra lista nera, la tua lista nera è inevitabilmente incompleta. Ti mancano alcune cose (* cough * onerror * cough *). Non cercherò di fornirti una lista più completa, perché l'approccio è fondamentalmente rotto e piuttosto che seguire l'approccio e cercare di estendere il tuo elenco di attributi da filtrare - devi abbandonare completamente l'approccio attuale e correggi il problema all'origine.

    
risposta data 21.04.2012 - 07:19
fonte
7

C'è una buona risorsa da OWASP: XS (Cross Site Scripting) Cheat Sheet

Fondamentalmente dovresti convalidare tutti i dati di input usando l'approccio white list (definisci pattern validi non pattern non validi come stai cercando di fare in questo momento) E dovresti codificare tutti i dati sull'output usando lo schema di codifica corretto per un dato contesto (HTML, JavaScript , Attributo HTML).

La corretta codifica è abbastanza difficile e non dovresti farlo da solo. Invece dovresti usare una libreria come Libreria Microsoft AntiXSS o OWASP ESAPI .

Puoi anche usare ModSecurity (o altri WAF) con le corrette regole di rilevamento (es. Set di regole core ModSecurity ), ma ricorda che questa non dovrebbe essere l'unica soluzione che utilizzi.

    
risposta data 20.04.2012 - 18:27
fonte

Leggi altre domande sui tag