A felhasználók védelme a DOM-alapú XSS támadásokkal szemben

a felhasználók védelme a Dom-alapú XSS támadásokkal szemben

a webhelyek közötti szkriptelés (XSS) az egyik leggyakoribb wayshacker-támadás. Az XSS biztonsági rései lehetővé teszik a rosszindulatú felhasználók számáravégezze el a JavaScript tetszőleges darabjait, amikor más felhasználók meglátogatják az Ön webhelyét.

az XSS a leggyakoribb nyilvánosan jelentett biztonsági rés, amely minden hacker eszközkészletének része.

kockázatok

előfordulás ritka

könnyű kihasználhatóság

káros hatás

a DOM-alapú XSS támadások minden kockázattal járnak, amelyek más típusú XSS támadásokkal járnak, hozzáadott bónusszal, amelyet a szerver oldalról lehetetlen felismerni.Minden olyan oldal, amely URI-töredékeket használ, potenciálisan veszélyben van az XSS támadásoktól.

védelem

a DOM-alapú XSS támadások elleni védelem annak ellenőrzése, hogy a JavaScript nem értelmezi-e az URI-töredékeket nem biztonságos módon. Számos módja van ennek biztosítására.

JavaScript keretrendszer használata

az olyan keretrendszerek, mint az AngularJS és a React olyan sablonokat használnak, amelyek explicit (és ritka) cselekvéssé teszik az ad-hoc HTML felépítését. Ez a Fejlesztőcsapatot a legjobb gyakorlatok felé tereli, és megkönnyíti a nem biztonságos műveletek felismerését.

AngularJS

a szögletes bármilyen dinamikus tartalom írt ki göndör zárójelben automatikusan megszökött, így a következő biztonságos:

 <div>{{dynamicContent}}</div>

legyen óvatos minden olyan kóddal, amely a dinamikus tartalmat a innerHTML attribútumhoz köti, mivel ez nem kerül automatikusan:

 <div ="dynamicContent"></div> <div innerHTML="{{dynamicContent}}"></div>
React

a Reactben minden göndör zárójelben írt dinamikus tartalom automatikusan megszökik, így a következők biztonságosak:

render() { return <div>{dynamicContent}</div>}

a React lehetővé teszi a nyers HTML kiírását úgy, hogy tartalmat köt a dangerouslySetInnerHTML tulajdonsághoz, amelynek neve emlékeztet a biztonsági kockázatra! Vigyázzon minden olyan kódra, amely a következőképpen néz ki:

render() { return <div dangerouslySetInnerHTML={ __html: dynamicContent } />}
gondosan ellenőrizze a kódját

néha a teljes JavaScript keretrendszer túl nehéz a site.In ebben az esetben rendszeresen el kell végeznie a kód-felülvizsgálatokat, hogy észrevegye a window.location.hashhivatkozást. Fontolja meg az elfogadott kódolási szabványok kidolgozását az URI-töredékek írására és értelmezésére vonatkozóan, és központosítsa ezt a logikát egy központi könyvtárban.

ha JQuery-t használ, gondosan ellenőrizze ahtml(...) funkciót használó kódokat. Ha nyers HTML-t készít a kliens oldalon a nem megbízható bemenet hátoldalán, akkor problémája lehet, függetlenül attól, hogy a bemenet URI-töredékből származik-e vagy sem. Használja a text(...) funkciót, amikor csak lehetséges.

ha közvetlenül használja a natív Dom API-kat, kerülje a következő tulajdonságok és funkciók használatát:

  • innerHTML
  • outerHTML
  • document.write

ehelyett állítsa be a szöveges tartalmat a címkéken belül, ahol csak lehetséges:

  • textContent
gondosan elemezze a JSON-t

ne értékelje a JSON – t, hogy natív JavaScript-objektumokká konvertálja-például a eval(...) függvény használatával. Ehelyett használja JSON.parse(...).

nem biztonságos kód észlelése Fejlesztőeszközök segítségével

a PortSwigger biztonsági cég által készített Burp Suite használható a DOM-alapú biztonsági rések észlelésére.

ne használjon URI töredékek egyáltalán!

a legbiztonságosabb kód az a kód, amely nincs ott. Ha nem kell használni URI töredékek, akkor ne! Írjon egy unit tesztet, hogy átvizsgálja a JavaScriptet a window.location.hash megemlítésére, és sikertelen legyen, ha a minta megtalálható. Ha szükség van URI töredékek használatára, akkor megvitathatja, hogyan lehet biztosítani azok biztonságos használatát.

tartalombiztonsági irányelv végrehajtása

a Modern böngészők támogatják a tartalombiztonsági irányelveket, amelyek lehetővé teszik a weboldal készítőjének, hogy szabályozza, Honnan tölthető be és futtatható a JavaScript (és más erőforrások). Az XSS támadások arra támaszkodnak, hogy a támadó képes rosszindulatú szkripteket futtatni a felhasználó weboldalán – vagy az inline <script> címkék beillesztésével valahol az oldal <html> címkéjén belül, vagy a böngészőt becsapva a JavaScript betöltésére egy rosszindulatú harmadik fél domainjéből.

ha a válaszfejlécben tartalombiztonsági házirendet állít be, akkorMondja meg a böngészőnek, hogy soha ne hajtson végre inline Javascriptet, valamint zárja le, hogy mely tartományok tárolhatják a JavaScriptet egy Oldalhoz:

tartalom-biztonság-politika: script-src ‘self’ https://apis.google.com

azzal, hogy engedélyezed az URI-kat, ahonnan a szkriptek betölthetők, implicit módon kijelented, hogy az inline JavaScript nem engedélyezett.

a tartalombiztonsági házirend <meta> címkében is beállítható az oldal <head> elemében:

<meta http-equiv="Content-Security-Policy" content="script-src 'self' https://apis.google.com">

ez a megközelítés nagyon hatékonyan védi a felhasználókat! Előfordulhat azonban, hogy jelentős mennyiségű fegyelem szükséges ahhoz, hogy webhelye készen álljon egy ilyen fejlécre.Az Inline szkriptek címkéit rossz gyakorlatnak tekintik a modern webfejlesztésben-A tartalom és a kód keverése megnehezíti a webes alkalmazások karbantartását -, de a régebbi, régebbi webhelyeken gyakoriak.

az inline szkriptek fokozatos eltávolításához fontolja meg az ofCSP megsértésének használatát Reports.By ha report-uri irányelvet ad hozzá a házirend fejlécéhez, a böngésző értesíti Önt az irányelvek megsértéséről, ahelyett, hogy megakadályozná az inline JavaScriptet a végrehajtásban:

Content-Security-Policy-Report-Only: script-src’self’; jelentés-uri http://example.com/csr-reports

ez megnyugtatja Önt, hogy nincsenek elhúzódó inline szkriptek,mielőtt egyenesen betiltaná őket.

további olvasmányok

  • hogyan működik a webhelyek közötti szkriptelés
  • Bevezetés a tartalombiztonsági politikába
  • CSP (tartalombiztonsági Szabályzat) a Mozilla Developer Network-en
  • DOM alapú webhelyek közötti szkriptelési biztonsági rés
  • tartalombiztonsági Szabályzat magyarázata
Cross-site Scripting

tükrözött XSS

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.