window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = finestra if (w.LeadBooster) { console.warn('LeadBooster esiste già') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() Sicurezza XSS nelle librerie Javascript più diffuse. Devo ancora preoccuparmi? - The Codest
The Codest
  • Chi siamo
  • Servizi
    • Sviluppo di software
      • Sviluppo Frontend
      • Sviluppo backend
    • Staff Augmentation
      • Sviluppatori Frontend
      • Sviluppatori backend
      • Ingegneri dei dati
      • Ingegneri del cloud
      • Ingegneri QA
      • Altro
    • Consulenza
      • Audit e consulenza
  • Industrie
    • Fintech e banche
    • E-commerce
    • Adtech
    • Tecnologia della salute
    • Produzione
    • Logistica
    • Automotive
    • IOT
  • Valore per
    • CEO
    • CTO
    • Responsabile della consegna
  • Il nostro team
  • Case Studies
  • Sapere come
    • Blog
    • Incontri
    • Webinar
    • Risorse
Carriera Contattate
  • Chi siamo
  • Servizi
    • Sviluppo di software
      • Sviluppo Frontend
      • Sviluppo backend
    • Staff Augmentation
      • Sviluppatori Frontend
      • Sviluppatori backend
      • Ingegneri dei dati
      • Ingegneri del cloud
      • Ingegneri QA
      • Altro
    • Consulenza
      • Audit e consulenza
  • Valore per
    • CEO
    • CTO
    • Responsabile della consegna
  • Il nostro team
  • Case Studies
  • Sapere come
    • Blog
    • Incontri
    • Webinar
    • Risorse
Carriera Contattate
Freccia indietro TORNA INDIETRO
2019-08-26
Sviluppo di software

Sicurezza XSS nelle librerie Javascript più diffuse. Devo ancora preoccuparmi?

Daniel Grek

Per quanto riguarda le librerie Javascript più diffuse, bisogna ammettere che nella loro storia di sviluppo (9, 6 e 5 anni per Angular, React e Vue, rispettivamente), sono successe molte cose buone in termini di sicurezza, soprattutto per quanto riguarda la vulnerabilità agli attacchi XSS. Tuttavia, questo articolo discuterà le piccole trappole e i principi che gli sviluppatori dovrebbero ancora conoscere.

XSS

Viviamo nell'era dei framework, non dei linguaggi. Questo implica che i programmatori dovrebbero essere in grado di preoccuparsi meno di molti aspetti dello sviluppo, compresa la sicurezza. La maggior parte degli attuali framework di backend implementa moduli di sicurezza, che vengono testati da aziende esterne specializzate e da grandi società. Pertanto, calo della consapevolezza della sicurezza potrebbe essere evidente, ad esempio tra i giovani programmatori, che si assumono maggiori responsabilità per i prodotti, soprattutto in termini di freelance.

Uno degli attacchi più comuni sul lato client dell'applicazione è l'XSS (Cross-Site Scripting). Viene eseguito iniettando script eseguibili sul lato client nelle applicazioni web [1] e utilizza metodi di rendering HTML implementati o Javascript codice valutatori che lo eseguono. L'XSS è relativamente redditizio, poiché può raccogliere molti dati diversi, tra cui cookie di sessione o dati dell'utente, e può installare un'applicazione di tracciamento come un keylogger, rendendolo pericoloso sia per gli utenti che per i proprietari di aziende. A volte vengono eseguite altre forme di attacco per consentire l'XSS sulla pagina, come ad esempio Iniezione SQL.

Esempio

Il modulo di accesso alla pagina visualizza il parametro loginName inviato nella richiesta GET nell'input del nome di accesso. Il valore non viene elaborato né dal server né dal lato client dell'applicazione. Richiedendo: http://localhost:8080/login?name=<script>alert(document.cookies)</script>
Il codice viene eseguito e i dati sono esposti

Questo è un esempio di attacco XSS riflessoin cui gli script vengono iniettati attraverso un indirizzo URL appositamente preparato, inviato alla vittima e riflesso dalla risposta del server. Altre forme di attacco note sono le seguenti:

  • XSS memorizzato eseguiti con dati iniettati memorizzati sul lato server, di solito da moduli disponibili nell'applicazione. L'applicazione client esegue il rendering del codice memorizzato, ad esempio, in un database.
  • DOM XSS esegue un attacco XSS senza utilizzare il lato server. Nel prosieguo dell'articolo, ci concentreremo su questa forma di attacco.

Attuali vulnerabilità nelle librerie React e Vue

Per le attuali versioni React/Vue, sono stati individuati due problemi principali, non ancora ufficialmente risolti. La prima vulnerabilità ha la stessa natura per ogni framework ed è legata ai metodi che consentono il rendering di HTML grezzo all'interno dei template: v-html e pericolosamenteSetInnerHTML, rispettivamente, per Vue e React. Ogni documentazione [2] informa i lettori che un uso improprio può esporre gli utenti ad attacchi XSS. Se non ci sono altre opzioni per risolvere il problema, assicurarsi che i dati siano filtrata e sfuggito. Sebbene siano pericolosi, non ci si deve aspettare che questi metodi siano risolutivi. Utilizzateli a vostro rischio e pericolo.

Nel primo trimestre del 2018 è stato rilevato un bug di grandi dimensioni in React, che consentiva l'esecuzione diretta di codice impostando la proprietà dell'elemento tag. Il passaggio di codice di esempio all'interno di attributi, come ad esempio javascript:alert(1) e l'esecuzione di un collegamento renderizzato eseguirà il codice. Questo problema [4] è ancora aperto e non è stato preparato e unito alcun fix, quindi assicuratevi che il vostro codice sia sicuro. Gli esempi proposti nella discussione ufficiale suggeriscono alcuni modi per superare questo problema.

Se non è possibile aggiornare alle ultime versioni, assicuratevi che i vecchi problemi non vi causino problemi assicurandovi che il vostro codice non sia esposto:

  • bambino nodo iniezione - React, utilizzo di React.createElement [5]
  • Rendering lato server - React/Vue [6]
  • Iniezione di CSS [8]

Si tratta ancora di Javascript. Si tratta ancora di front-end

Non dimenticate che oltre ai framework o alle librerie stesse, Javascript come linguaggio ha alcune funzioni pericolose, che devono essere evitate o utilizzate con cautela. In genere sono legate alla manipolazione del DOM o all'esecuzione di script. eval() rappresenta funzioni di punta di questo tipo ed è estremamente pericolosa perché esegue direttamente il codice stringato dato [9]. Inoltre, quando si trova una di queste funzioni, è bene dare un'occhiata al proprio codice:

  • documento.scrivere
  • document.writeln
  • (elemento).innerHTML
  • (elemento).outerHTML
  • (elemento).insertAdjacentHTML

In questo caso, l'uso di linters con regole appropriate può essere utile per trovare questi punti vulnerabili. Esistono anche molti analizzatori di codice aperti o commerciali che possono aiutare a rilevare le lacune di sicurezza nel codice sviluppato.

Indipendentemente dalla libreria/framework scelta, dobbiamo comunque ricordare i principi di base dello sviluppo front-end. Innanzitutto, bisogna sempre assicurarsi che il codice esterno iniettato provenga da una fonte affidabile. Audit le vostre dipendenze e sceglietele con saggezza. Alcune possono contenere gravi vulnerabilità, esponendo il codice anche se il codice stesso è a posto. Per saperne di più sulla sicurezza delle dipendenze, leggete qui:

https://thecodest.co/blog/security-in-javascript-packages/

Quindi... bisogna ancora preoccuparsi?

Sì, e invito tutti a non fidarsi mai delle librerie esterne o di se stessi in termini di sicurezza. Indipendentemente da quanto ci si aspetta che il proprio software sia sicuro, bisogna sempre fare uno sforzo per testarlo il più possibile in termini di forme di attacco comuni [10].

  1. https://reactjs.org/docs/dom-elements.html#dangerouslysetinnerhtml
  2. https://vuejs.org/v2/guide/syntax.html#Raw-HTML
  3. https://github.com/facebook/react/issues/12441
  4. http://danlec.com/blog/xss-via-a-spoofed-react-element
  5. https://medium.com/node-security/the-most-common-xss-vulnerability-in-react-js-applications-2bdffbcc1fa0
  6. https://github.com/dotboris/vuejs-serverside-template-xss
  7. https://frontarm.com/james-k-nelson/how-can-i-use-css-in-js-securely/
  8. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval#Do_not_ever_use_eval!

Per saperne di più:

5 errori da evitare durante la manutenzione di un progetto in PHP

Sviluppo PHP. Componente console di Symfony - Suggerimenti e trucchi

Perché abbiamo bisogno di Symfony Polyfill (... e perché non dovremmo)

Articoli correlati

Sviluppo di software

Costruire applicazioni web a prova di futuro: le intuizioni del team di esperti di The Codest

Scoprite come The Codest eccelle nella creazione di applicazioni web scalabili e interattive con tecnologie all'avanguardia, offrendo esperienze utente senza soluzione di continuità su tutte le piattaforme. Scoprite come la nostra esperienza favorisce la trasformazione digitale e il business...

IL CANCRO
Sviluppo di software

Le 10 principali aziende di sviluppo software con sede in Lettonia

Scoprite le migliori aziende di sviluppo software della Lettonia e le loro soluzioni innovative nel nostro ultimo articolo. Scoprite come questi leader tecnologici possono aiutarvi a migliorare la vostra attività.

thecodest
Soluzioni per aziende e scaleup

Essenziali di sviluppo software Java: Guida all'outsourcing di successo

Esplorate questa guida essenziale sullo sviluppo di software Java con successo outsourcing per migliorare l'efficienza, accedere alle competenze e guidare il successo del progetto con The Codest.

thecodest
Sviluppo di software

La guida definitiva all'outsourcing in Polonia

L'aumento di outsourcing in Polonia è guidato dai progressi economici, educativi e tecnologici, che favoriscono la crescita dell'IT e un clima favorevole alle imprese.

IlCodesto
Soluzioni per aziende e scaleup

Guida completa agli strumenti e alle tecniche di audit IT

Gli audit IT garantiscono sistemi sicuri, efficienti e conformi. Per saperne di più sulla loro importanza, leggete l'articolo completo.

The Codest
Jakub Jakubowicz CTO e cofondatore

Iscrivetevi alla nostra knowledge base e rimanete aggiornati sulle competenze del settore IT.

    Chi siamo

    The Codest - Società internazionale di sviluppo software con centri tecnologici in Polonia.

    Regno Unito - Sede centrale

    • Ufficio 303B, 182-184 High Street North E6 2JA
      Londra, Inghilterra

    Polonia - Poli tecnologici locali

    • Parco uffici Fabryczna, Aleja
      Pokoju 18, 31-564 Cracovia
    • Ambasciata del cervello, Konstruktorska
      11, 02-673 Varsavia, Polonia

      The Codest

    • Casa
    • Chi siamo
    • Servizi
    • Case Studies
    • Sapere come
    • Carriera
    • Dizionario

      Servizi

    • Consulenza
    • Sviluppo di software
    • Sviluppo backend
    • Sviluppo Frontend
    • Staff Augmentation
    • Sviluppatori backend
    • Ingegneri del cloud
    • Ingegneri dei dati
    • Altro
    • Ingegneri QA

      Risorse

    • Fatti e miti sulla collaborazione con un partner esterno per lo sviluppo di software
    • Dagli Stati Uniti all'Europa: Perché le startup americane decidono di trasferirsi in Europa
    • Confronto tra gli hub di sviluppo Tech Offshore: Tech Offshore Europa (Polonia), ASEAN (Filippine), Eurasia (Turchia)
    • Quali sono le principali sfide di CTO e CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Condizioni di utilizzo del sito web

    Copyright © 2025 di The Codest. Tutti i diritti riservati.

    it_ITItalian
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek it_ITItalian