GH GambleHub

უსაფრთხოების პოლიტიკა და CSP

1) რატომ გვჭირდება უსაფრთხოების პოლიტიკოსები

თანამედროვე საყრდენი და API დამოკიდებულია მრავალ წყაროზე (CDN, ანალიტიკა, PSP, 3DS, ჩატი). მკაცრი პოლიტიკოსის გარეშე, იზრდება XSS რისკები, კლიშე, მონაცემთა გაჟონვა და სესიების ქურდობა. უსაფრთხოების პოლიტიკოსები ზღუდავენ იმას, რაც ნებადართულია ბრაუზერის მოდელში გადატანისას „მხოლოდ აშკარად დაშვებულია“.

2) ბაზის სვეტები

CSP (შინაარსის უსაფრთხოების პოლიტიკა) არის JS/CSS/მედიის ნებადართული წყაროებისა და ქცევის ცენტრალიზებული „მენიუ“.
Trusted Types არის DOM-XSS- ის დაცვა ტიპის დონეზე.
SRI (Subresource Integrity) - სკრიპტების/სტილის მთლიანობის კონტროლი.
COOP/COEP/CORP - კონტექსტებისა და რესურსების მკაცრი იზოლაცია წყაროებს შორის.
Fetch Metadata ('Sec-Fetch-') - სერვერის გამოსავალი ჯვარედინი მოთხოვნების ფილტრაციისთვის.
CORS არის API- ზე ინტერნეტის წვდომის პოლიტიკა.
კლასიკური სათაურები: HSTS, 'X-Frame-Options '/' frame-ancestors', 'Referrer-Policy', 'Permissions-Policy', SameSite-cokies.

3) CSP: საფუძველი და პრინციპები

3. 1 დირექტივები (ძირითადი)

'default-src' - ნაგულისხმევი სხვა დირექტივებისთვის.
'script src' - წყაროები JS, nonce/hash, 'strict-dynamic', 'report-sample'.
'style-src' - CSS წყაროები; მინიმუმამდე დაყვანა 'unsafe-inline'.
`img-src`, `font-src`, `media-src`, `object-src` (обычно `none`).
'connect-src' - ქსელის მოთხოვნები (XHR/fetch/WebSocket).
'frame-src '/' child-src' - მესამე მხარის ჩარჩოები (PSP, 3DS).
'frame-ancestors' - ვის შეუძლია ჩვენი საიტის შექმნა.
'base-uri' - ჩანაცვლების აკრძალვა '<base>'.
'form action' - სადაც ნებადართულია ფორმები.
'upgrade-insecure-requests', 'block-all-mixed-შინაარსი' - ბრძოლა HTTP/HTTPS მიქსის წინააღმდეგ.
'ანგარიში '/' ანგარიში' - სად უნდა გააგზავნოს დარღვევები.

3. 2 Nonce и hash

Nonce მიდგომა: თითოეული HTTP პასუხისთვის, შექმნათ კრიპტო-შემთხვევითი' nonce', დაამატეთ '<script nonce ="...>" და' script-src 'nonce- ში... ".
Hash მიდგომა: ინლაინის შინაარსის ფიქსირებული ჰაში. შესაფერისია სტატიკური HTML- სთვის, დინამიკის დროს არასასიამოვნოა.
'სტანდარტული დინამიკა': ენდობა მხოლოდ „სანდო“ სკრიპტით დატვირთულ სკრიპტებს (nonce/hash). ის ასუფთავებს დინამიური დატვირთვის დროს სამიზნე დომენების ჩამოთვლის აუცილებლობას, მაგრამ მოითხოვს თანამედროვე ბრაუზერებს.

3. 3 აკრძალვა 'unsafe-'

თავიდან აიცილოთ 'unsafe-inline', 'unsafe-eval'. თუ ჩარჩო მოითხოვს eval- ს (მაგალითად, წყაროს-რვეული dev- ში), შედის მხოლოდ dev- ში.
სტილისთვის - გამოიყენეთ 'nonce' ან 'hash', თუ ეს შესაძლებელია ინლაინების გარეშე.

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
💡 დროებით შეგიძლიათ დაიწყოთ, როგორც 'შინაარსის უსაფრთხოების პოლიტიკა-ანგარიში-მხოლოდ', შეაგროვოთ მოხსენებები, გამართვა და შემდეგ გადაიტანოთ enforcing რეჟიმში.

4) Trusted Types (DOM-XSS)

ჩართეთ დირექტივა: 'Content-Security-Policy: require-trusted-types-for' script '; trusted-types app default`.
შექმენით ერთიანი კოდი პოლიტიკა ('window. trustedTypes. createPolicy('app', { createHTML() {... } })`).
აკრძალეთ სახიფათო დავალებები ('element. innerHTML =...`) без Trusted Types.
ინტეგრაცია ჩარჩოებთან (React/Angular/Vue): გამოიყენეთ უსაფრთხო randering API, თავიდან აიცილეთ საშიში dangerouslysSetInERHTM.

5) SRI (CDN მთლიანობა)

გარე '<script> '/' link <' link> 'გამოიყენეთ' integrity = "sha256-"... crossorigin = "anonymous" ".
SRI ავსებს და არ შეცვლის CSP. CDN ვერსიის განახლებისას - განაახლეთ ჰაში.

6) კლიჩკინგი და ჩარჩოები

თანამედროვე მეთოდია 'frame-ancestors' (შეცვლის მოძველებულ 'X-Frame-Options').

Contact

დაგვიკავშირდით

დაგვიკავშირდით ნებისმიერი კითხვის ან მხარდაჭერისთვის.ჩვენ ყოველთვის მზად ვართ დაგეხმაროთ!

ინტეგრაციის დაწყება

Email — სავალდებულოა. Telegram ან WhatsApp — სურვილისამებრ.

თქვენი სახელი არასავალდებულო
Email არასავალდებულო
თემა არასავალდებულო
შეტყობინება არასავალდებულო
Telegram არასავალდებულო
@
თუ მიუთითებთ Telegram-ს — ვუპასუხებთ იქაც, დამატებით Email-ზე.
WhatsApp არასავალდებულო
ფორმატი: ქვეყნის კოდი და ნომერი (მაგალითად, +995XXXXXXXXX).

ღილაკზე დაჭერით თქვენ ეთანხმებით თქვენი მონაცემების დამუშავებას.