Сиёсати амният ва CSP
1) Чаро ба мо сиёсати амният лозим аст
Фронти муосир ва API аз бисёр манбаъҳо вобастаанд (CDN, таҳлил, PSP, 3DS, чатҳо). Бидуни сиёсати сахт, хатари XSS, clickjacking, ихроҷи маълумот ва рабудани ҷаласаҳо меафзояд. Сиёсати амният он чизеро, ки бо нобаёнӣ иҷозат дода мешавад, тавассути интиқоли браузер ба модели иҷозатдиҳӣ маҳдуд мекунад.
2) Сутунҳои асосӣ
CSP (Content Security Policy) як менюи мутамаркази JS/CSS/манбаъҳо ва рафтори иҷозатдодашуда мебошад.
Намудҳои боэътимод - Муҳофизати сатҳи нав аз DOM-XSS.
SRI (Subresource Integrity) - якпорчагии скриптҳо/услубҳоро назорат мекунад.
COOP/COEP/CORP - ҷудокунии қатъии заминаҳо ва захираҳо дар байни манбаъҳо.
Fetch Metadata ('Sec-Fetch-') ҳалли сервер барои филтр кардани дархостҳои сайт мебошад.
CORS - сиёсати дастрасии домени API.
Унвонҳои классикӣ: HSTS, 'X-Frame-Options '/' frame-аҷдодон', 'Referrer-Policy', 'Иҷозат-Сиёсат', Same
3) CSP: Асос ва принсипҳо
3. 1 Дастур (калид)
'default-src' - пешфарз барои дигар дастурҳо.
'script-src' - Манбаъҳои JS, nonce/hash, 'қатъӣ-динамикӣ', 'ҳисобот-намуна'.
'style-src' - Манбаъҳои CSS; ҳадди аққал 'unsafe-inline'.
'img-src', 'font-src', 'media-src', 'object-src' (обычно 'ҳеҷ').
'connect-src' - дархостҳои шабакавӣ (XHR/fetch/Websocket).
'frame-src '/' child-src' - чаҳорчӯбаҳои тарафи сеюм (PSP, 3DS).
'frame-аҷдодон' - ки метавонанд сайти моро ворид кунанд (зидди clickjacking).
'base-uri' - иваз кардани '<base>' -ро манъ кунед.
'form-action' - дар он ҷо шаклҳо пешниҳод карда мешаванд.
'дархостҳои такмилдиҳӣ-ноамнӣ', 'блок-ҳама-омехта' - мубориза бо омехтаи HTTP/HTTPS.
'report-uri '/' report-to' - ба куҷо фиристодани қонунвайронкуниҳо.
3. 2 Nonce i hash
Равиши Nonce: тавлид кардани 'nonce '-и тасодуфӣ барои ҳар як посухи HTTP, илова кардани' <скрипт nonce = "... ">' ба скриптҳои хаттӣ ва 'скрипт-src' non-ce-"..
Равиши ҳаш: ҳаши собитшудаи мундариҷаи дохилӣ. Мувофиқ барои HTML статикӣ, барои динамика номувофиқ аст.
'қатъии-динамикӣ': танҳо скриптҳои бо скрипти "боэътимод" пуркардашуда эътимод кунед (бо nonce/hash). Ҳангоми пурборкунии динамикӣ зарурати рӯйхати доменҳои мақсаднокро хориҷ мекунад, аммо браузерҳои муосирро талаб мекунад.
3. 3 Манъи 'хатарнок'
Нагузоред, ки "хатарнок", "хатарнок-эвал". Агар чаҳорчӯба эволютсия талаб кунад (масалан, харитаи манбаъ дар 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
4) Намудҳои боэътимод (DOM-XSS)
Дастурро фаъол созед: 'Мазмун-Амният-Сиёсат: намудҳои боэътимод барои' навиштаҷот '; барномаи боэътимоди намудҳои пешфарз '.
Эҷод кардани сиёсати ягона дар рамз ('тиреза. намудҳои боэътимод. эҷод кардани сиёсат ('барнома', {эҷод кардани HTML () {...}}) ').
Манъ кардани супоришҳои ноамн ('унсур. дарунсохти HTML =... ') без Намудҳои боэътимод.
Интегратсияи чаҳорчӯба (React/Angular/Vue): пешниҳоди бехатари API-ро истифода баред, хатарнокро пешгирӣ кунед.
5) SRI (якпорчагии CDN)
Барои' <скрипт> '/' <link>', 'беайбӣ =" sha256-... -ро истифода баред. "crossorigin =" беном" '.
Иловаҳои SRI, иваз карда намешаванд, CSP. Ҳангоми такмил додани версияи CDN, хэшро навсозӣ кунед.
6) Clickjacking ва чорчӯбаҳо
Роҳи муосир 'чорчӯбаи аҷдодон' аст (иваз кардани 'X-Frame-Options' -и кӯҳна).