GH GambleHub

Қауіпсіздік және CSP саясаты

1) Қауіпсіздік саясаты не үшін қажет

Қазіргі заманғы фронтенд және API көптеген дереккөздерге (CDN, аналитика, PSP, 3DS, чаттар) байланысты. Қатаң саясатсыз XSS, кликджекинг, деректердің жылыстауы және сессияларды айдап әкету тәуекелдері артады. Қауіпсіздік саясаты шолғышты «тек айқын рұқсат етілген» үлгісіне (allow-list) ауыстыру арқылы әдепкі рұқсат етілгендерді шектейді.

2) Базалық бағандар

CSP (Content Security Policy) - рұқсат етілген көздер мен 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-cookies.

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-content' - HTTP/HTTPS араласуымен күрес.
'report-uri '/' report-to' - бұзушылықтарды қайда жіберу керек.

3. 2 Nonce и hash

Nonce-тәсіл: Әрбір HTTP-жауап үшін 'nonce' криптослучесиесін жасау, inline-скрипттерге қосу '<script nonce = «»...>' және 'script-src' nonce-... '.
Hash-тәсіл: инлайн мазмұнының бекітілген хэшы. Статистикалық HTML үшін қолайлы, динамика кезінде ыңғайсыз.
'strict-dynamic': «сенімді» скриптпен (nonce/hash) жүктелген скрипттерге ғана сену. Динамикалық жүктеу кезінде мақсатты домендерді санамалау қажеттілігін жояды, бірақ modern-браузерлерді талап етеді.

3. 3 Тыйым салу 'unsafe-'

'unsafe-inline', 'unsafe-eval' дегендерден аулақ болу керек. Егер фреймворк eval (мысалы, dev ішіндегі source-map) талап етсе, тек 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
💡 Уақытша 'Content-Security-Policy-Report-Only' деп іске қосып, есептерді жинап, жөндеп, содан кейін 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): қауіпсіз рендерлеу API пайдаланыңыз, қауіпті dangerouslySetInnerHTML-ден аулақ болыңыз.

5) SRI (CDN тұтастығы)

Сыртқы' <script> '/' <link> 'integrity =» sha256- «... crossorigin =» anonymous»' пайдаланыңыз.
SRI CSP емес, толықтырады. CDN нұсқасын жаңарту кезінде - хэшті жаңарту.

6) Кликджекинг және фреймдер

Қазіргі заманғы тәсіл - 'frame-ancestors' (ескірген 'X-Frame-Options' орнына).

Contact

Бізбен байланысыңыз

Кез келген сұрақ немесе қолдау қажет болса, бізге жазыңыз.Біз әрдайым көмектесуге дайынбыз!

Интеграцияны бастау

Email — міндетті. Telegram немесе WhatsApp — қосымша.

Сіздің атыңыз міндетті емес
Email міндетті емес
Тақырып міндетті емес
Хабарлама міндетті емес
Telegram міндетті емес
@
Егер Telegram-ды көрсетсеңіз — Email-ге қоса, сол жерге де жауап береміз.
WhatsApp міндетті емес
Пішім: +ел коды және номер (мысалы, +7XXXXXXXXXX).

Батырманы басу арқылы деректерді өңдеуге келісім бересіз.