GH GambleHub

Անվտանգության քաղաքականությունը և 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' > և" script-wince 'noncee... "։

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
💡 Ժամանակավորապես կարող եք սկսել որպես «Content-Moscow-Policy-Reast-Only», հավաքել հաշվետվություններ, կարգաբերել և հետո տեղափոխվել enforcing ռեժիմին։

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 ամբողջականությունը)

Արտաքին '