Անվտանգության քաղաքականությունը և CSP
1) Ինչո՞ ւ են անհրաժեշտ անվտանգության քաղաքականությունները
Ժամանակակից ճակատը և API-ը կախված են բազմաթիվ աղբյուրներից (CDN, վերլուծություն, PSA, 3DS, չատներ)։ Առանց կոշտ քաղաքական գործչի ավելանում են XIV, կլիկջեքինգի, տվյալների արտահոսքի և նստաշրջանների գողությունների ռիսկերը։ Անվտանգության քաղաքականությունը սահմանափակում է այն, ինչ թույլատրվում է լռելյայն, բրաուզերը «թույլատրվում է միայն» (allow-list)։
2) Հիմնական սյուները
CSP (Content You Policy) - թույլատրված աղբյուրների և JS/CSS/լրատվամիջոցների վարքի կենտրոնացված «ընտրացանկը»։
Trusted Types-ը DIM-XIV-ի պաշտպանությունն է տեսակների մակարդակում։
MSI (Delresource Integrity) - ջութակների/նիշերի ամբողջականության վերահսկումը։
COOOP/COEP/COP-ը աղբյուրների միջև ենթատեքստերի և ռեսուրսների խիստ մեկուսացումն է։
Fetch Metadata («Sec-Fetcha») սերվերային լուծում է քրոսային-կայքերի հարցումների ֆիլտրման համար։
MSS-ը API-ի միջմայրցամաքային հասանելիության քաղաքականությունն է։
Դասական վերնագրերը ՝ HSTS, «X-Frame-Options »/« frame-ancestors», «Referrer-Policy», «Permissions-Policy», SoftSite-cookies։
3) CSP 'հիմքն ու սկզբունքները
3. 1 Հրահանգներ (հիմնական)
«wwww.orld-www.c» - ը դեֆոլտ է մնացած կոմպոզիցիաների համար։
«script-4c» - JS, nonce/hash, «strict-international», «reast-sample» աղբյուրները։
«style-no c» - CSS աղբյուրներ; նվազագույնի հասցնել 'unsafe-inae'։
`img-src`, `font-src`, `media-src`, `object-src` (обычно `none`).
«connational-4c» - ցանցային հարցումներ (XHR/fetch/WindowSocket)։
«Frame-www.c '/' child-inform» - աջակողմյան (PMS, 3DS)։
«frame ancestors» - ով կարող է կառուցել մեր կայքը (anti-clikjeking)։
«box-uri» - փոխարինման արգելքը ։
«form-action», որտեղ թույլատրվում է սաբմիացնել ձևերը։
«upgrade-insecure-reques.ru», «block-all-mixed-entent» - պայքարը HTTP/HTTPS խառնուրդի հետ։
«reault-uri »/« report-to», որտեղ ուղարկել խախտումներ։
3. 2 Nonce и hash
Nonce-մոտեցում 'յուրաքանչյուր HTTP-ի պատասխանը լուծարել ծպտյալ "nonce", ավելացնել international'
Hash-մոտեցում 'ֆիքսված հեշ պարունակություն։ Հարմար է ստատիկ HTML-ի համար, անհարմար է դինամիկայի ժամանակ։
«strict-international» 'վստահել միայն ջութակներին, որոնք բեռնված են «վստահված» ջութակով (nonce/hash)։ Այն մաքրում է տեխնոլոգիական օրինագծերը դինամիկ բեռնման ժամանակ, բայց պահանջում է modern-զննարկիչներ։
3. 3 Արգելք 'unsafe- "
Խուսափել «unsafe-inae», «unsafe-eval»։ Եթե ֆրեյմորքը պահանջում է eval (օրինակ, source-map dev), միացնել միայն dev-ում։
Մրցույթի համար 'օգտագործել «nonce» կամ «hash», հնարավորության դեպքում առանց inlins։
3. 4 Օրինակ խիստ CSP (ռազմական ուղեցույց)
Content-Security-Policy:
default-src 'none';
base-uri 'self';
object-src 'none';
script-src 'self' 'nonce-{RANDOM}' 'strict-dynamic' https://www. googletagmanager. com;
style-src 'self' 'nonce-{RANDOM}';
img-src 'self' data: https://images. example-cdn. com;
font-src 'self' https://fonts. gstatic. com;
connect-src 'self' https://api. example. com wss://ws. example. com;
frame-src https://3ds. psp. com https://pay. psp. com;
frame-ancestors 'none';
form-action 'self' https://pay. psp. com;
upgrade-insecure-requests;
report-to csp-endpoint; report-sample
4) Trusted Types (DOM-XSS)
Միացրեք հրահանգը '«Content-Moscow-Policy: require-trusted-types-for' script»; trusted-types app default`.
Ստեղծեք մեկ քաղաքականություն կոդում (")։ trustedTypes. createPolicy('app', { createHTML() {... } })`).
Արգելեք անապահով նշանակումները («element»)։ innerHTML =...`) без Trusted Types.
Ինտեգրումը շրջանակների հետ (React/Angular/Vue) 'օգտագործեք անվտանգ API rendering, խուսափեք վտանգավոր dangerouslySETINAM-ից։
5) MSI (CDN ամբողջականությունը)
Արտաքին '