Content Security Policy React-sovelluksille
Määritä tiukka CSP-otsake, joka estää upotetut skriptit ja luvattomat ulkoiset resurssit React-sovelluksissa.
Content Security Policy React-sovelluksille on ilmainen React Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu React Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. React Academy-kurssilla on yhteensä 4 oppituntia.
Mikä on Content Security Policy
Content Security Policy (CSP) on HTTP-vastausotsake, joka kertoo selaimelle, mitkä sisällön lähteet ovat luotettuja. Määrittämällä tarkasti, mitkä skriptit, tyylit, kuvat ja fontit saavat latautua, CSP estää haitallisen lisätyn sisällön suorittamisen — vaikka XSS-haavoittuvuus sallisi hyökkääjän lisätä HTML:ää sivulle.
default-src ja script-src
default-src 'self' määrittää perustason: kaikki resurssityypit (skriptit, tyylit, kuvat, fontit ja kehykset) voivat latautua vain samasta originista. script-src 'self' rajoittaa skriptien lataamisen samaan originiin ja estää ulkoisista CDN-palveluista ladatut skriptit, ellei niitä ole erikseen lueteltu. Nämä kaksi direktiiviä muodostavat yhdessä rajoittavan CSP:n perustan.
Miksi evalin estäminen on tärkeää
eval() muuntaa merkkijonon suoritettavaksi koodiksi ajonaikana — juuri tätä XSS-hyötykuormat tarvitsevat. CSP, jossa on script-src 'self' (ilman 'unsafe-eval'-arvoa), estää eval()-funktion sekä siihen liittyvät funktiot, kuten new Function() ja setTimeout(string). Tämä poistaa merkittävän luokan XSS-hyötykuormien suoritusmahdollisuuksia.
strict-dynamic skriptiketjuissa
'strict-dynamic' direktiivissä script-src antaa luottamuksen jo luotettujen skriptien lataamille skripteille. Tämä mahdollistaa bundlereiden käyttämät dynaamiset skriptien latausmallit ilman, että jokainen CDN-osoite täytyy lisätä sallittujen luetteloon. Luotettu skripti voi ladata lisää skriptejä, ja nämä perivät luottamuksen.
Hajautusarvoihin perustuva CSP inline-skripteille
Jos sovelluksen täytyy käyttää tiettyä inline-skriptiä (kuten analytiikan alustuskoodia), voitte laskea sen SHA-256-hajautusarvon ja lisätä arvon 'sha256-base64hash' direktiiviin script-src. Vain täsmälleen kyseistä hajautusarvoa vastaavat skriptit saavat suorittua inline-muodossa. Hyökkääjän lisäämällä skriptillä on eri hajautusarvo, joten se estetään.
Nonceen perustuva CSP
Nonce on palvelimen jokaista pyyntöä varten luoma kryptografisesti satunnainen arvo. Palvelin lisää noncen sekä script-tagiin (<script nonce="abc123">) että CSP-otsakkeeseen (script-src 'nonce-abc123'). Vain oikean noncen sisältävät skriptit suoritetaan. Hyökkääjät eivät voi ennustaa noncea, joten lisätyt skriptit eivät voi käyttää sitä.
CSP:n raportointi
CSP tukee rikkomusten raportointia direktiivillä report-uri /csp-violation-endpoint tai uudemmalla report-to-direktiivillä. Kun selain estää resurssin CSP:n vuoksi, se lähettää JSON-raportin päätepisteeseen. Näiden raporttien seuranta auttaa tunnistamaan sekä oikeat määritysongelmat että käynnissä olevat hyökkäysyritykset.
CSP:n toteuttaminen Next.js:ssä
Lisätkää Next.js:ssä CSP-otsakkeet middlewareen: luokaa middleware.ts, muodostakaa nonce, asettakaa Content-Security-Policy-otsake ja välittäkää nonce sivulle vastausotsakkeen kautta. Sivun layout lukee noncen otsakkeesta ja lisää sen kaikkiin inline-skripteihin ja style-tageihin.
CSP:n testaaminen ilman estämistä
Content-Security-Policy-Report-Only on testaustila: selain ei valvo mitään, vaan lähettää rikkomusraportit kaikesta, mikä olisi estetty. Ottakaa Report-Only-tila ensin käyttöön, korjatkaa kaikki rikkomukset ja vaihtakaa vasta sitten valvontaa toteuttavaan Content-Security-Policy-otsakkeeseen, jotta sovellus ei rikkoudu.
Chrome DevToolsin konsolin rikkomukset
Kun CSP estää resurssin, Chrome DevToolsin konsoli näyttää punaisen virheilmoituksen, joka ilmoittaa estetyn URL-osoitteen ja rikotun direktiivin. Nämä ilmoitukset ovat erittäin hyödyllisiä kehityksen ja testauksen aikana. Jokainen rikkomus on ratkaistava joko korjaamalla käytäntöä, siirtämällä resurssi sallittuun lähteeseen tai käyttämällä noncea tai hajautusarvoa.
Käytännöllinen CSP React-SPA:lle
Käytännöllinen React-SPA:n CSP: default-src 'self'; script-src 'self' 'strict-dynamic' 'nonce-NONCE'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; connect-src 'self' https://api.yourdomain.com; frame-ancestors 'none'. frame-ancestors 'none' estää lisäksi klikkauskaappauksen estämällä sovelluksen upottamisen iframe-kehyksiin.
CSP:n script-src self
Mitä script-src 'self' Content Security Policyssä estää?
Oppitunnin kertaus
CSP on HTTP-otsake, joka määrittää luotetut sisällön lähteet. default-src 'self' ja script-src 'self' estävät ulkoiset skriptit ja evalin. Inline-skriptit sallitaan hajautusarvojen tai nonce-arvojen avulla. 'strict-dynamic' tukee dynaamista skriptien lataamista. Testatkaa ennen käytännön valvonnan käyttöönottoa Content-Security-Policy-Report-Only-otsakkeella. Next.js toteuttaa CSP:n middlewarella. DevToolsin konsoli näyttää rikkomukset reaaliajassa.
Opi React tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 88
- Oppitunnit
- 324
Usein kysytyt kysymykset
Onko oppitunti ”Content Security Policy React-sovelluksille” ilmainen?
Kyllä – oppitunnin ”Content Security Policy React-sovelluksille” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko React Academy-kurssin, päivitä CoddyKit PROhon. React Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Content Security Policy React-sovelluksille”?
Määritä tiukka CSP-otsake, joka estää upotetut skriptit ja luvattomat ulkoiset resurssit React-sovelluksissa. Harjoittelet React Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni React Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin React Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”Content Security Policy React-sovelluksille”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä React Academy-oppitunnilla?
Kyllä. Jokainen React Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- XSS Reactissa: dangerouslySetInnerHTML ja kolmannen osapuolen skriptit
- CSRF-suojaus Reactissa ja API-asetuksissa
- Content Security Policy React-sovelluksille
- Salaisuuksien hallinta ja ympäristömuuttujat