window.pipedriveLeadboosterConfig = { base: leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster on juba olemas') } 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 }) }, } } })() XSS turvalisus populaarsetes Javascript raamatukogudes. Kas ma peaksin ikka veel mures olema? - The Codest
The Codest
  • Meie kohta
  • Teenused
    • Tarkvaraarendus
      • Frontend arendus
      • Backend arendus
    • Staff Augmentation
      • Frontend arendajad
      • Backend arendajad
      • Andmeinsenerid
      • Pilveinsenerid
      • QA insenerid
      • Muud
    • See nõuandev
      • Audit ja nõustamine
  • Tööstusharud
    • Fintech & pangandus
    • E-commerce
    • Adtech
    • Healthtech
    • Tootmine
    • Logistika
    • Autotööstus
    • IOT
  • Väärtus
    • CEO
    • CTO
    • Tarnejuht
  • Meie meeskond
  • Case Studies
  • Tea kuidas
    • Blogi
    • Kohtumised
    • Veebiseminarid
    • Ressursid
Karjäärivõimalused Võtke ühendust
  • Meie kohta
  • Teenused
    • Tarkvaraarendus
      • Frontend arendus
      • Backend arendus
    • Staff Augmentation
      • Frontend arendajad
      • Backend arendajad
      • Andmeinsenerid
      • Pilveinsenerid
      • QA insenerid
      • Muud
    • See nõuandev
      • Audit ja nõustamine
  • Väärtus
    • CEO
    • CTO
    • Tarnejuht
  • Meie meeskond
  • Case Studies
  • Tea kuidas
    • Blogi
    • Kohtumised
    • Veebiseminarid
    • Ressursid
Karjäärivõimalused Võtke ühendust
Tagasi nool TAGASI
2019-08-26
Tarkvaraarendus

XSS turvalisus populaarsetes Javascript raamatukogudes. Kas ma peaksin ikka veel mures olema?

Daniel Grek

Tuleb tunnistada, et kõige populaarsemate Javascript-raamatukogude arendusajaloo jooksul (vastavalt 9, 6 ja 5 aastat Angular, React ja Vue puhul) on turvalisuse osas palju head juhtunud, eriti seoses XSS-rünnakute haavatavusega. Selles artiklis käsitletakse siiski väikseid lõkse ja põhimõtteid, mida arendajad peaksid ikka veel teadma.

XSS

Me elame raamistike, mitte keelte ajastul. See tähendab, et programmeerijad peaksid saama vähem muretseda paljude arenduse aspektide, sealhulgas turvalisuse pärast. Enamik praegustest backend raamistikest rakendab turvamooduleid, mida testivad välised, spetsialiseerunud ettevõtted ja suured seltsid. Seetõttu, vähenev turvatundlikkus võib ilmneda näiteks noorte programmeerijate vahel, kes võtavad rohkem vastutust toodete eest, eriti vabakutseliste puhul.

Üks levinumaid rünnakuid rakenduse kliendipoolel on XSS (Cross-Site Scripting). See toimub käivitatavate kliendipoolsete skriptide süstimise teel veebirakendustesse [1] ja kasutab rakendatud HTML-redaktsioonimeetodeid või Javascript kood hindajad, kes seda täidavad. XSS on suhteliselt tulutoov, kuna võib koguda palju erinevaid andmeid, sealhulgas seansiküpsiseid või kasutajaandmeid, ning see võib paigaldada jälgimisrakenduse, näiteks keyloggeri, mis muudab selle ohtlikuks nii kasutajatele kui ka ettevõtte omanikele. Mõnikord viiakse läbi ka muid ründeid, et võimaldada XSS-i lehel, näiteks SQL-süstimine.

Näide

Sisselogimise vorm lehel muudab loginName parameeter saata jooksul GET taotluse sisselogimise nimi sisend. Väärtust ei töötle ei server ega rakenduse kliendipoolne osa. Taotluse esitamisel: http://localhost:8080/login?name=<script>alert(document.cookies)</script>
koodi täidetakse ja andmed on avatud

See on näide peegeldunud XSS rünnak, kus skripte sisestatakse ohvrile esitatud ja serveri vastuses kajastatud spetsiaalselt ettevalmistatud URL-aadressi kaudu. Teised tuntud populaarsed ründevormid on järgmised:

  • Salvestatud XSS teostatakse serveripoolsete, tavaliselt rakenduses olevate vormide abil salvestatud andmete sisestamisega. Kliendirakendus renderdab koodi, mis on salvestatud näiteks andmebaasi.
  • DOM XSS teostab XSS-rünnaku ilma serveripoolset kasutamata. Artikli edasises osas keskendume sellele rünnakuvormile.

Praegused haavatavused React ja Vue raamatukogudes

Praeguste versioonide React/Vue puhul on tuvastatud kaks suuremat probleemi, mida ei ole veel ametlikult parandatud. Esimene haavatavus on iga raamistiku puhul sama iseloomuga ja on seotud meetoditega, mis võimaldavad toor-HTMLi esitamist mallide sees: v-html ja ohtlikultSetInnerHTML, vastavalt Vue ja React. Iga dokumentatsioon [2] teavitab lugejaid sellest, et ebaõige kasutamine võib kasutajaid ohustada XSS-rünnakuga. Kui muud võimalused probleemi lahendamiseks puuduvad, tuleb tagada, et andmed on filtreeritud ja põgenenud. Kuigi need on ohtlikud, ei tohiks eeldada, et need meetodid on fikseeritud. Kasutage neid omal vastutusel.

2018. aasta esimeses kvartalis avastati Reacts suur viga, mis võimaldas otsest koodi täitmist, määrates tag-elemendi omaduse. Näiteks koodi edastamine atribuutide sees, näiteks javascript:alert(1) ja renderdatud lingi käivitamine täidab koodi. See probleem [4] on endiselt lahtine ning parandust ei ole veel ette valmistatud ja ühendatud, seega veenduge, et teie kood on turvaline. Ametlikus arutelus pakutud näited pakuvad mõningaid võimalusi selle probleemi ületamiseks.

Kui uuele versioonile uuendamine ei ole võimalik, veenduge, et vanad probleemid ei tekita teile probleeme, tagades, et teie kood ei ole avatud:

  • laps sõlme süstimine - React, kasutamine React.createElement [5]
  • serveripoolne renderdamine - React/Vue [6]
  • CSS-i süstimine [8]

Tegemist on ikka veel Javascriptiga. See on ikka veel front-end

Ärge unustage, et lisaks raamistikele või raamatukogudele endile on Javascriptil kui keelel ka mõned ohtlikud funktsioonid, mida tuleb vältida või kasutada ettevaatlikult. Need on üldiselt seotud DOM-ga manipuleerimise või skriptide täitmisega. eval() esindab selliseid lipulaevafunktsioone ja on äärmiselt ohtlik, sest see täidab antud stringitud koodi otse [9]. Samuti vaadake oma koodi paremini üle, kui leiate ühe sellise funktsiooni:

  • document.write
  • document.writeln
  • (element).innerHTML
  • (element).outerHTML
  • (element).insertAdjacentHTML

Siinkohal võib selliste haavatavate punktide leidmisel olla abiks sobivate reeglite kasutamine. Samuti on palju avatud või kommertskoodi analüsaatoreid, mis võivad aidata teil tuvastada turvaauke väljatöötatud koodis.

Olenemata sellest, milline raamatukogu/raamistik on valitud, peame ikkagi meeles pidama esipoole arendamisega seotud põhiprintsiipe. Esiteks, veenduge alati, et väliskood, mida te süstite, pärineb usaldusväärsest allikast. Audit oma sõltuvused ja valige need targalt. Mõned neist võivad sisaldada tõsiseid haavatavusi, mis võivad teie koodi paljastada isegi siis, kui koodis endas on kõik korras. Lisateavet sõltuvuste turvalisuse kohta saate lugeda siit:

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

Niisiis... kas te peaksite ikka veel mures olema?

Jah - ja ma soovitan kõigile tungivalt, et nad ei usaldaks kunagi väliseid raamatukogusid ega ennast turvalisuse osas. Olenemata sellest, kui turvaliseks te oma tarkvara peate, tehke alati jõupingutusi, et testida seda võimalikult palju tavaliste rünnakuvormide suhtes [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!

Loe edasi:

5 viga, mida peaksite projekti PHP hooldamisel vältima

PHP arendus. Symfony konsooli komponent - näpunäited ja nipid

Miks me vajame Symfony Polyfill'i (... ja miks me ei peaks seda tegema)

Seotud artiklid

Tarkvaraarendus

Tulevikukindlate veebirakenduste loomine: The Codest ekspertide meeskonna ülevaade

Avastage, kuidas The Codest paistab skaleeritavate, interaktiivsete veebirakenduste loomisel silma tipptehnoloogiatega, mis pakuvad sujuvat kasutajakogemust kõigil platvormidel. Saate teada, kuidas meie eksperditeadmised aitavad kaasa digitaalsele ümberkujundamisele ja äritegevusele...

THECODEST
Tarkvaraarendus

Top 10 Lätis asuvat tarkvaraarendusettevõtet

Tutvu Läti parimate tarkvaraarendusettevõtete ja nende innovaatiliste lahendustega meie viimases artiklis. Avastage, kuidas need tehnoloogiajuhid saavad aidata teie äri edendada.

thecodest
Enterprise & Scaleups lahendused

Java tarkvaraarenduse põhitõed: A Guide to Outsourcing Successfully

Tutvuge selle olulise juhendiga, kuidas edukalt outsourcing Java tarkvara arendada, et suurendada tõhusust, pääseda ligi eksperditeadmistele ja edendada projekti edu The Codest abil.

thecodest
Tarkvaraarendus

Ülim juhend Poola allhanke kohta

outsourcing kasv Poolas on tingitud majanduslikust, hariduslikust ja tehnoloogilisest arengust, mis soodustab IT kasvu ja ettevõtlussõbralikku kliimat.

TheCodest
Enterprise & Scaleups lahendused

Täielik juhend IT-auditi vahendite ja tehnikate kohta

IT-auditid tagavad turvalised, tõhusad ja nõuetele vastavad süsteemid. Lisateavet nende tähtsuse kohta leiate kogu artiklist.

The Codest
Jakub Jakubowicz CTO & kaasasutajad

Tellige meie teadmistebaas ja jääge kursis IT-sektori eksperditeadmistega.

    Meie kohta

    The Codest - rahvusvaheline tarkvaraarendusettevõte, mille tehnoloogiakeskused asuvad Poolas.

    Ühendkuningriik - peakorter

    • Büroo 303B, 182-184 High Street North E6 2JA
      London, Inglismaa

    Poola - kohalikud tehnoloogiakeskused

    • Fabryczna büroopark, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varssavi, Poola

      The Codest

    • Kodu
    • Meie kohta
    • Teenused
    • Case Studies
    • Tea kuidas
    • Karjäärivõimalused
    • Sõnastik

      Teenused

    • See nõuandev
    • Tarkvaraarendus
    • Backend arendus
    • Frontend arendus
    • Staff Augmentation
    • Backend arendajad
    • Pilveinsenerid
    • Andmeinsenerid
    • Muud
    • QA insenerid

      Ressursid

    • Faktid ja müüdid koostööst välise tarkvaraarenduspartneriga
    • USAst Euroopasse: Miks otsustavad Ameerika idufirmad Euroopasse ümber asuda?
    • Tech Offshore arenduskeskuste võrdlus: Euroopa (Poola), ASEAN (Filipiinid), Euraasia (Türgi).
    • Millised on CTO ja CIOde peamised väljakutsed?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Copyright © 2025 by The Codest. Kõik õigused kaitstud.

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