A HTTP válaszfejléc, a Content-Security-Policy lehetővé teszi a weboldal számára, hogy szabályozza, mely erőforrásokat tölti be a felhasználói ügynök egy adott oldalra. Kivéve a speciális eseteket, a szabályzatok főként a szerver forrás- és szkriptvégpontjainak meghatározását foglalják magukban. Ez segít megállítani a keresztoldali szkripttámadásokat
Dokumentáció:A hiperlink bejelentkezés látható.
Ez a cikk a W3C Tartalombiztonsági Szabályzatát, röviden CSP-t írja le. Ahogy a neve is mutatja, ez a specifikáció a tartalombiztonsághoz kapcsolódik, és főként arra szolgál, hogy meghatározza, mely forrásokat tölthet be egy oldal, és csökkentse az XSS előfordulását.
A korai Chrome támogatta a CSP-t az X-WebKit-CSP válaszfejlécén, míg a firefox és az IE az X-Content-Security-Policy-t, míg a Chrome25 és a Firefox23 elkezdte támogatni a szabványos Content-Security-Policy-t.
Webalkalmazásokról érzékeny információk, például felhasználónevek, jelszavak, gépnevek és/vagy érzékeny fájlhelyek gyűjthetők A kezdő felhasználók meggyőzhetők, hogy érzékeny információkat adjanak meg, például felhasználóneveket, jelszavakat, hitelkártyaszámokat, társadalombiztosítási számokat stb
Először is hozzunk létre egy új projektet az MVC ASP.NET, készítsünk egy új js szkriptet, és dinamikusan töltsük be a Baidu statisztikák js kódját a következők szerint:
Ahogy a fenti ábrán látható, látható a harmadik fél (Baidu) által sikeresen bevezetett JS szkriptkód, ha van valami rosszindulatú kód a harmadik féltől származó JS-ben, például sütiklopás, tartalom módosítása, linkek ugrálása stb.
Hogyan állíthatom meg a bizonytalan, harmadik féltől származó JS szkriptek bevezetését?
Megoldás
VálaszfejHozzáadni "Tartalom-biztonsági politika"például:
Irányelv | Példa utasításértékre | illusztrál | default-src | 'önmag' cnd.a.com | Határozzuk meg az alapértelmezett betöltési szabályzatot minden erőforrástípusra (JS, IMAGE, CSS, WEB betűtípus, AJAX kérések, iframe-ek, multimédiák stb.), és használd az alapértelmezett szabályt bizonyos típusú erőforrásokhoz, ha nincs külön definiált politika. | script-src | 'önmag' js.a.com | Definiáljunk egy JavaScript betöltési szabályzatát. | style-src | 'önmag' css.a.com | Határozz meg egy betöltési szabályzatot egy stílushoz. | img-src | 'önmag' img.a.com | Definiáljunk betöltési szabályzatot a képekhez. | connect-src | 'önmag' | Szabályzatok betöltése Ajax, WebSockets stb. kéréseire. Ha nem engedélyezett, a böngésző 400-as státuszú választ szimulál. | font-src | font.a.com | WebFont betöltési szabályzata. | objektum-src | 'önmag' | <object><embed> <applet> A pluginok, például a flash betöltési szabályzatok betöltése olyan címkékhez, mint , vagy . | Media-SRC | media.a.com | <audio> <video> Bevezetésre szóló HTML multimédiás betöltési stratégiák olyan címkékhez, mint vagy . | frame-src | 'önmag' | Keretek betöltési szabályzata. | sandbox | engedélyezett formák | Engedélyezd a sandboxot (hasonlóan egy iframe sandbox tulajdonságához) a kért erőforráshoz. | Report-URI | /report-uri | Mondd meg a böngészőnek, melyik címre kell naplóadatokat küldeni, ha a kért forrás nem engedélyezett a szabályzat szerint. Special: Ha azt szeretnéd, hogy a böngésző csak naplókat jelentsen, és ne blokkoljon semmit, használhatod helyette a Content-Security-Policy-Report-Only fejlécet. |
Módosítsuk a projekt web.config fájlját, hogy egyedi válaszfejlécet adjunk hozzá az alábbiaknak:
Ismételjék meg a projektet az alábbiak szerint:
A böngésző sikeresen blokkolta a harmadik féltől származó js szkriptek betöltését:
Megtagadta a 'https://hm.baidu.com/hm.js?6dbaac17dfeb2840b5b09d2dff6d2319' szkript betöltését, mert az sérti a következő Tartalombiztonsági Szabályzat irányelvét: "script-src 'self' http://localhost:56888/ ". Megjegyzendő, hogy a 'script-src-elem' nem volt kifejezetten beállítva, ezért a 'script-src' tartalékként használatos. (Vége)
|