Domanda

Vorrei consentire ai miei utenti di webapp di salvare CSS personalizzati attraverso un campo di testo per modificare l'aspetto della loro GUI.

Immagino che ci siano alcuni hack CSS malvagi là fuori. Di cosa dovrei occuparmi?

È stato utile?

Soluzione

Una soluzione sarebbe quella di fornire le opzioni utente tramite alcuni editor, permettendo loro di scegliere il colore / dimensione dei vari elementi. Quindi genera il CSS da solo in base alle opzioni fornite dall'utente.

Ciò impedirebbe il salvataggio di qualsiasi CSS non standard o CSS che non si desidera utilizzare.

Altri suggerimenti

C'è esattamente una cosa a cui potrei pensare: espressioni CSS (che sono, tuttavia, valutate solo in IE). Questi consentono JavaScript nei file CSS, quindi vorrei rimuovere qualcosa come

property: expression(...);

o semplicemente lancia un " Non consentito " di errore.

Ma poi, se restituisci il CSS esattamente all'utente che lo ha inserito, è responsabile se introduce lui stesso una vulnerabilità XSS.

In tutti gli altri casi: usa la soluzione Zeus.

Se stai consentendo agli utenti di includere direttamente CSS personalizzati sul tuo sito, stai chiedendo agli hacker di prenderne il controllo. In realtà stai rendendo il sistema di temi meno utilizzabile, perché solo le persone che conoscono i CSS sono in grado di farlo. A meno che il tuo sito non sia specifico per programmatori basati sul Web, è probabilmente meglio creare una serie di temi tra cui gli utenti possono scegliere.

Puoi anche creare un set di strumenti sul tuo sito che consentono all'utente di cambiare stili specifici nella pagina attraverso un'interfaccia utente anziché direttamente tramite CSS. Ciò consentirà a più utenti di modellare in modo più flessibile le proprie pagine, ma di solito comporta un costo maggiore in termini di tempo di sviluppo, a meno che non si stia utilizzando un CMS e il proprio CMS specifico consenta facilmente questa funzionalità nel core o in un plug-in.

Spero che questo aiuti.

Tra le altre cose, altri utenti hanno verificato che siano CSS validi: http: //jigsaw.w3. org / css-validator /

Anche se vorrei cercare la risposta di Zeus, potresti usare un parser CSS (cerca SO, ci sono varie domande) e controlla tutti gli input in un elenco di proprietà approvate ( color , sfondo , ecc.)

Se i tuoi utenti possono modificare solo il proprio CSS e non quello di altri utenti, qual è il rischio? Il CSS verrà loro offerto solo, quindi nel peggiore dei casi, saranno in grado di hackerarsi, no?

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