உள்ளடக்க பாதுகாப்பு கொள்கை (CSP) குறுக்கு-தள ஸ்கிரிப்டிங் (XSS) தாக்குதல்களை எவ்வாறு திறம்பட குறைக்கிறது, உலகளாவிய பார்வையாளர்களுக்கான இணைய பாதுகாப்பை மேம்படுத்துகிறது என்பதை அறிக.
உள்ளடக்க பாதுகாப்பு கொள்கை (CSP): XSS தடுப்புக்கான விரிவான வழிகாட்டி
இன்றைய டிஜிட்டல் உலகில், இணைய பாதுகாப்பு மிக முக்கியமானது. குறுக்கு-தள ஸ்கிரிப்டிங் (XSS) தாக்குதல்கள் உலகளவில் வலை பயன்பாடுகளுக்கு ஒரு பரவலான மற்றும் ஆபத்தான அச்சுறுத்தலாக இருக்கின்றன. உள்ளடக்க பாதுகாப்பு கொள்கை (CSP) என்பது ஒரு சக்திவாய்ந்த HTTP பதில் தலைப்பு ஆகும், இது கூடுதல் பாதுகாப்பு அடுக்கை வழங்குகிறது, இது XSS பாதிப்புகளின் அபாயத்தை குறைக்க உதவுகிறது. இந்த வழிகாட்டி CSP, அதன் செயலாக்கம் மற்றும் XSS தாக்குதல்களிலிருந்து உங்கள் வலை பயன்பாடுகளைப் பாதுகாப்பதற்கான சிறந்த நடைமுறைகள் பற்றிய விரிவான கண்ணோட்டத்தை வழங்குகிறது.
குறுக்கு-தள ஸ்கிரிப்டிங் (XSS) என்றால் என்ன?
குறுக்கு-தள ஸ்கிரிப்டிங் (XSS) என்பது ஒரு வகை ஊடுருவல் தாக்குதல் ஆகும், அங்கு தீங்கிழைக்கும் ஸ்கிரிப்டுகள் மற்றபடி பாதிப்பில்லாத மற்றும் நம்பகமான வலைத்தளங்களில் செலுத்தப்படுகின்றன. ஒரு தாக்குதல் செய்பவர் ஒரு வலை பயன்பாட்டைப் பயன்படுத்தி தீங்கிழைக்கும் குறியீட்டை அனுப்பும்போது XSS தாக்குதல்கள் நிகழ்கின்றன, பொதுவாக ஒரு உலாவி பக்க ஸ்கிரிப்ட் வடிவில், ஒரு வித்தியாசமான இறுதி பயனருக்கு. இந்த தாக்குதல்கள் வெற்றிகரமாக நடைபெற அனுமதிக்கும் குறைபாடுகள் மிகவும் பரவலாக உள்ளன மற்றும் ஒரு வலை பயன்பாடு அதை சரிபார்க்காமல் அல்லது குறியாக்கம் செய்யாமல் அது உருவாக்கும் வெளியீட்டில் ஒரு பயனரின் உள்ளீட்டை எங்கு பயன்படுத்தினாலும் நிகழ்கிறது.
XSS தாக்குதல்களில் மூன்று முக்கிய வகைகள் உள்ளன:
- சேமிக்கப்பட்ட (நிலையான) XSS: தீங்கிழைக்கும் ஸ்கிரிப்ட் இலக்கு சேவையகத்தில் நிரந்தரமாக சேமிக்கப்படுகிறது (எ.கா., தரவுத்தளம், செய்தி மன்றம், பார்வையாளர் பதிவு, கருத்து புலம் போன்றவை). ஒரு பயனர் பாதிக்கப்பட்ட பக்கத்தைப் பார்வையிடும்போது, சேமிக்கப்பட்ட ஸ்கிரிப்ட் இயக்கப்படும்.
- பிரதிபலித்த (நிலையானதற்ற) XSS: தீங்கிழைக்கும் ஸ்கிரிப்ட் வலை சேவையகத்திலிருந்து பிரதிபலிக்கப்படுகிறது, அதாவது ஒரு பிழை செய்தி, தேடல் முடிவு அல்லது கோரிக்கையின் ஒரு பகுதியாக சேவையகத்திற்கு அனுப்பப்பட்ட உள்ளீட்டின் சில அல்லது அனைத்து பதில்களையும் உள்ளடக்கிய வேறு எந்த பதிலிலும். ஒரு தீங்கிழைக்கும் இணைப்பை கிளிக் செய்ய அல்லது தீங்கிழைக்கும் ஸ்கிரிப்டைக் கொண்ட ஒரு படிவத்தைச் சமர்ப்பிக்க பயனர் ஏமாற்றப்பட வேண்டும்.
- DOM அடிப்படையிலான XSS: கிளையன்ட் பக்க குறியீட்டில் பாதிப்பு உள்ளது. தாக்குதல் செய்பவரின் ஸ்கிரிப்டைச் சேர்க்க உலாவியின் DOM சூழல் கையாளப்படுவதால் தீங்கிழைக்கும் ஸ்கிரிப்ட் இயக்கப்படுகிறது.
XSS தாக்குதல்கள் கடுமையான விளைவுகளை ஏற்படுத்தக்கூடும், அவற்றுள்:
- பயனர் சான்றுகளை (குக்கீகள், அமர்வு டோக்கன்கள்) திருடுவது.
- வலைத்தளங்களை சிதைப்பது.
- பயனர்களை தீங்கிழைக்கும் தளங்களுக்கு திருப்பி விடுவது.
- தீம்பொருளை நிறுவுதல்.
- உணர்திறன் தரவுக்கான அங்கீகரிக்கப்படாத அணுகலைப் பெறுதல்.
உள்ளடக்க பாதுகாப்பு கொள்கை (CSP) என்றால் என்ன?
உள்ளடக்க பாதுகாப்பு கொள்கை (CSP) என்பது பாதுகாப்பின் கூடுதல் அடுக்கு ஆகும், இது குறுக்கு-தள ஸ்கிரிப்டிங் (XSS) மற்றும் தரவு ஊடுருவல் தாக்குதல்கள் உட்பட சில வகையான தாக்குதல்களைக் கண்டறிந்து குறைக்க உதவுகிறது. ஒரு குறிப்பிட்ட பக்கத்திற்கு உலாவி ஏற்ற அனுமதிக்கப்படும் ஆதாரங்களை (எ.கா., ஸ்கிரிப்டுகள், ஸ்டைல்ஷீட்கள், படங்கள், எழுத்துருக்கள், பிரேம்கள்) கட்டுப்படுத்த உங்களை அனுமதிக்கும் HTTP பதில் தலைப்பைப் பயன்படுத்தி CSP செயல்படுத்தப்படுகிறது. கடுமையான CSP ஐ வரையறுப்பதன் மூலம், உங்கள் வலை பயன்பாட்டின் தாக்குதல் மேற்பரப்பை கணிசமாகக் குறைக்கலாம் மற்றும் தீங்கிழைக்கும் குறியீட்டை செலுத்த தாக்குதல் செய்பவர்களுக்கு மிகவும் கடினமாக்கலாம்.
உலாவி ஆதாரங்களை ஏற்ற அனுமதிக்கப்படும் ஆதாரங்களின் வெள்ளைப்பட்டியலை வரையறுப்பதன் மூலம் CSP செயல்படுகிறது. CSP இல் வெளிப்படையாக அனுமதிக்கப்படாத ஒரு மூலத்திலிருந்து ஏற்றப்படும் எந்த ஆதாரமும் உலாவியால் தடுக்கப்படும். இது அங்கீகரிக்கப்படாத ஸ்கிரிப்டுகளின் செயல்பாட்டைத் தடுக்கிறது மற்றும் XSS தாக்குதல்களின் அபாயத்தைக் குறைக்கிறது.
CSP எவ்வாறு செயல்படுகிறது: உத்தரவுகள் மற்றும் ஆதாரங்கள்
CSP ஆனது தொடர்ச்சியான உத்தரவுகளைப் பயன்படுத்தி கட்டமைக்கப்படுகிறது, ஒவ்வொன்றும் ஒரு குறிப்பிட்ட வகை ஆதாரத்திற்கான கொள்கையை குறிப்பிடுகிறது. ஒவ்வொரு உத்தரவும் ஒரு பெயரைத் தொடர்ந்து அனுமதிக்கப்பட்ட ஆதாரங்களின் பட்டியலைக் கொண்டுள்ளது. மிகவும் பொதுவாகப் பயன்படுத்தப்படும் CSP உத்தரவுகள் சில இங்கே:
- `default-src`: பிற மூல-குறிப்பிட்ட உத்தரவுகள் இல்லாவிட்டால், ஆதாரங்களைப் பெறுவதற்கான இயல்புநிலை கொள்கையை குறிப்பிடுகிறது.
- `script-src`: ஜாவாஸ்கிரிப்ட் குறியீட்டிற்கான அனுமதிக்கப்பட்ட ஆதாரங்களைக் குறிப்பிடுகிறது.
- `style-src`: ஸ்டைல்ஷீட்களுக்கான (CSS) அனுமதிக்கப்பட்ட ஆதாரங்களைக் குறிப்பிடுகிறது.
- `img-src`: படங்களுக்கான அனுமதிக்கப்பட்ட ஆதாரங்களைக் குறிப்பிடுகிறது.
- `font-src`: எழுத்துருக்களுக்கான அனுமதிக்கப்பட்ட ஆதாரங்களைக் குறிப்பிடுகிறது.
- `connect-src`: நெட்வொர்க் கோரிக்கைகளை (எ.கா., AJAX, WebSockets) செய்வதற்கான அனுமதிக்கப்பட்ட ஆதாரங்களைக் குறிப்பிடுகிறது.
- `media-src`: வீடியோ மற்றும் ஆடியோ ஆதாரங்களை ஏற்றுவதற்கான அனுமதிக்கப்பட்ட ஆதாரங்களைக் குறிப்பிடுகிறது.
- `object-src`: பிளாஷ் போன்ற செருகுநிரல்களுக்கான அனுமதிக்கப்பட்ட ஆதாரங்களைக் குறிப்பிடுகிறது.
- `frame-src`: பிரேம்களை உட்பொதிப்பதற்கான அனுமதிக்கப்பட்ட ஆதாரங்களைக் குறிப்பிடுகிறது (iframeகள்).
- `base-uri`: ஒரு ஆவணத்தின் <base> உறுப்பில் பயன்படுத்தக்கூடிய URLகளை கட்டுப்படுத்துகிறது.
- `form-action`: படிவங்களைச் சமர்ப்பிக்கக்கூடிய URLகளை கட்டுப்படுத்துகிறது.
- `upgrade-insecure-requests`: பாதுகாப்பற்ற (HTTP) கோரிக்கைகளை பாதுகாப்பான (HTTPS) கோரிக்கைகளாக தானாக மேம்படுத்த உலாவிகளுக்கு அறிவுறுத்துகிறது.
- `block-all-mixed-content`: பக்கம் HTTPS இல் ஏற்றப்படும்போது HTTP ஐப் பயன்படுத்தி எந்த ஆதாரங்களையும் ஏற்றுவதிலிருந்து உலாவியைத் தடுக்கிறது.
- `report-uri`: CSP மீறல்கள் பற்றிய அறிக்கைகளை உலாவி அனுப்ப வேண்டிய URL ஐக் குறிப்பிடுகிறது. `report-to` க்கு ஆதரவாக கைவிடப்பட்டது.
- `report-to`: CSP மீறல்கள் பற்றிய அறிக்கைகளை உலாவி அனுப்ப வேண்டிய பெயரிடப்பட்ட முடிவைக் குறிப்பிடுகிறது.
பொதுவாகப் பயன்படுத்தப்படும் மூல மதிப்புகள் பின்வருமாறு:
- `*`: எந்த மூலத்திலிருந்தும் ஆதாரங்களை அனுமதிக்கிறது (உற்பத்தி சூழல்களுக்கு பரிந்துரைக்கப்படவில்லை).
- `'self'`: பாதுகாக்கப்பட்ட ஆவணத்தைப் போலவே அதே மூலத்திலிருந்து (திட்டம், ஹோஸ்ட் மற்றும் போர்ட்) ஆதாரங்களை அனுமதிக்கிறது.
- `'none'`: எந்த மூலத்திலிருந்தும் ஆதாரங்களை ஏற்றுவதை அனுமதிக்காது.
- `data:`: `data:` திட்டத்தின் மூலம் ஆதாரங்களை ஏற்ற அனுமதிக்கிறது (எ.கா., வரிசை படங்கள்).
- `'unsafe-inline'`: வரிசை ஜாவாஸ்கிரிப்ட் மற்றும் CSS ஐப் பயன்படுத்த அனுமதிக்கிறது (வலுவாக ஊக்கப்படுத்தப்படுகிறது).
- `'unsafe-eval'`: `eval()` மற்றும் ஒத்த செயல்பாடுகளைப் பயன்படுத்த அனுமதிக்கிறது (வலுவாக ஊக்கப்படுத்தப்படுகிறது).
- `'strict-dynamic'`: குறிப்பியில் உள்ள ஒரு ஸ்கிரிப்டுக்கு வெளிப்படையாக வழங்கப்பட்ட நம்பிக்கை, ஒரு nonce அல்லது ஹேஷுடன் சேர்த்து, அந்த ரூட் ஸ்கிரிப்ட்டால் ஏற்றப்பட்ட அனைத்து ஸ்கிரிப்டுகளுக்கும் பரப்பப்படும் என்று குறிப்பிடுகிறது.
- `'nonce-
'` : பொருந்தும் nonce பண்புக்கூறு கொண்ட ஸ்கிரிப்டுகள் அல்லது ஸ்டைல்களை அனுமதிக்கிறது. - `'sha256-
'`, `'sha384- : பொருந்தும் SHA ஹேஷுடன் ஸ்கிரிப்டுகள் அல்லது ஸ்டைல்களை அனுமதிக்கிறது.'`, `'sha512- '` - `https://example.com`: ஒரு குறிப்பிட்ட களத்திலிருந்து ஆதாரங்களை அனுமதிக்கிறது.
CSP ஐ செயல்படுத்துதல்
CSP ஐ இரண்டு முதன்மை வழிகளில் செயல்படுத்தலாம்:
- HTTP தலைப்பு: `Content-Security-Policy` HTTP பதில் தலைப்பை அனுப்ப உங்கள் வலை சேவையகத்தை உள்ளமைக்க விருப்பமான முறை உள்ளது. இது உங்கள் வலைத்தளத்தில் உள்ள ஒவ்வொரு பக்கம் அல்லது ஆதாரத்திற்கும் CSP ஐ வரையறுக்க உங்களை அனுமதிக்கிறது.
- <meta> குறிச்சொல்: உங்கள் HTML ஆவணத்தின் <head> பிரிவில் உள்ள <meta> குறிச்சொல்லைப் பயன்படுத்தி CSP ஐ வரையறுக்கலாம். இருப்பினும், இந்த முறை குறைவான நெகிழ்வானது மற்றும் HTTP தலைப்பைப் பயன்படுத்துவதை விட வரம்புகளைக் கொண்டுள்ளது. உதாரணமாக, `frame-ancestors`, `sandbox`, மற்றும் `report-uri` உத்தரவுகளை HTML மெட்டா குறிச்சொற்களில் பயன்படுத்த முடியாது.
HTTP தலைப்பைப் பயன்படுத்துதல்
HTTP தலைப்பைப் பயன்படுத்தி CSP ஐ செயல்படுத்த, உங்கள் வலை சேவையகத்தை அதன் பதில்களில் `Content-Security-Policy` தலைப்பைச் சேர்க்கும்படி கட்டமைக்க வேண்டும். நீங்கள் பயன்படுத்தும் வலை சேவையகத்தைப் பொறுத்து குறிப்பிட்ட கட்டமைப்பு படிகள் மாறுபடும்.
பொதுவான வலை சேவையகங்களுக்கான எடுத்துக்காட்டுகள் இங்கே:
- Apache: உங்கள் `.htaccess` கோப்பு அல்லது மெய்நிகர் ஹோஸ்ட் கட்டமைப்பில் பின்வரும் வரியைச் சேர்க்கவும்:
Header set Content-Security-Policy "default-src 'self'; script-src 'self' https://example.com; style-src 'self' https://example.com; img-src 'self' data:;"
add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://example.com; style-src 'self' https://example.com; img-src 'self' data:;";
app.use(function(req, res, next) {
res.setHeader("Content-Security-Policy", "default-src 'self'; script-src 'self' https://example.com; style-src 'self' https://example.com; img-src 'self' data:;");
next();
});
<meta> குறிச்சொல்லைப் பயன்படுத்துதல்
<meta> குறிச்சொல்லைப் பயன்படுத்தி CSP ஐ செயல்படுத்த, உங்கள் HTML ஆவணத்தின் <head> பிரிவில் பின்வரும் குறிச்சொல்லைச் சேர்க்கவும்:
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' https://example.com; style-src 'self' https://example.com; img-src 'self' data:;">
முக்கியமான கருத்தில் கொள்ள வேண்டியவை:
- `http-equiv` பண்புக்கூறு "Content-Security-Policy" ஆக அமைக்கப்பட வேண்டும்.
- `content` பண்புக்கூறில் CSP உத்தரவுகள் உள்ளன.
- முன்னர் குறிப்பிட்டபடி <meta> குறிச்சொற்களைப் பயன்படுத்துவதற்கான வரம்புகளை நினைவில் கொள்க.
CSP எடுத்துக்காட்டுகள்
விளக்கங்களுடன் கூடிய பல CSP எடுத்துக்காட்டுகள் இங்கே:
- அடிப்படை CSP:
- ஒரு குறிப்பிட்ட களத்திலிருந்து ஸ்கிரிப்டுகளை அனுமதித்தல்:
- CDN இலிருந்து ஸ்டைல்களை அனுமதித்தல்:
- எந்த மூலத்திலிருந்தும் படங்களை அனுமதித்தல்:
- CSP மீறல்களைப் புகாரளித்தல்:
- இணக்கத்தன்மைக்கு `report-to` மற்றும் `report-uri` ஐ ஒன்றாகப் பயன்படுத்துதல்:
- வரிசை ஸ்கிரிப்டுகளுக்கான Nonceகளைப் பயன்படுத்துதல்:
Content-Security-Policy: default-src 'self';
இந்தக் கொள்கை அதே மூலத்திலிருந்து ஆதாரங்களை மட்டும் அனுமதிக்கிறது.
Content-Security-Policy: default-src 'self'; script-src 'self' https://example.com;
இந்தக் கொள்கை அதே மூலத்திலிருந்தும் `https://example.com` இலிருந்து ஸ்கிரிப்டுகளையும் அனுமதிக்கிறது.
Content-Security-Policy: default-src 'self'; style-src 'self' https://cdn.example.com;
இந்தக் கொள்கை அதே மூலத்திலிருந்தும் `https://cdn.example.com` இலிருந்து ஸ்டைல்களையும் அனுமதிக்கிறது.
Content-Security-Policy: default-src 'self'; img-src *;
இந்தக் கொள்கை அதே மூலத்திலிருந்தும் எந்த மூலத்திலிருந்தும் படங்களையும் அனுமதிக்கிறது (உற்பத்திக்கு பரிந்துரைக்கப்படவில்லை).
Content-Security-Policy: default-src 'self'; report-uri /csp-report-endpoint;
இந்தக் கொள்கை அதே மூலத்திலிருந்து ஆதாரங்களை அனுமதிக்கிறது மற்றும் `/csp-report-endpoint` க்கு மீறல் அறிக்கைகளை அனுப்புகிறது. `report-uri` க்கு பதிலாக `report-to` ஐப் பயன்படுத்த பரிந்துரைக்கப்படுகிறது.
Content-Security-Policy: default-src 'self'; report-uri /csp-report-endpoint; report-to csp-endpoint;
Content-Security-Policy-Report-Only: default-src 'self'; report-uri /csp-report-endpoint; report-to csp-endpoint;
Report-To: {"group":"csp-endpoint","max_age":10886400,"endpoints":[{"url":"/csp-report-endpoint"}]}
இந்த எடுத்துக்காட்டு `report-uri` (பழைய உலாவிகளுக்கு) மற்றும் `report-to` இறுதிப்புள்ளி இரண்டையும் அமைப்பதைக் காட்டுகிறது, அதனுடன் `Report-To` தலைப்பை தானே கட்டமைக்கிறது. உங்கள் சேவையகம் `Report-To` தலைப்பை சரியாக கையாளுகிறதா என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள், `group`, `max_age` மற்றும் `endpoints` ஐ சரியாக அமைத்தல்.
Content-Security-Policy: default-src 'self'; script-src 'self' 'nonce-rAnd0mN0nc3Str1nG';
இந்தக் கொள்கை அதே மூலத்திலிருந்து ஆதாரங்களையும், பொருந்தும் nonce பண்புக்கூறு கொண்ட வரிசை ஸ்கிரிப்டுகளையும் அனுமதிக்கிறது.
<script nonce="rAnd0mN0nc3Str1nG">
// உங்கள் வரிசை ஸ்கிரிப்ட் குறியீடு இங்கே
</script>
அறிக்கை-மட்டும் பயன்முறையில் CSP
CSP ஐ இரண்டு முறைகளில் செயல்படுத்தலாம்:
- நிறைவேற்றும் முறை: CSP ஐ மீறும் ஆதாரங்களை உலாவி தடுக்கிறது.
- அறிக்கை-மட்டும் முறை: எந்த ஆதாரத்தையும் தடுக்காமல் CSP மீறல்களை ஒரு குறிப்பிட்ட இறுதிப்புள்ளிக்கு உலாவி புகாரளிக்கிறது.
நிறைவேற்றுவதற்கு முன் உங்கள் CSP ஐச் சோதித்துச் செம்மைப்படுத்த அறிக்கை-மட்டும் முறை பயனுள்ளதாக இருக்கும். அறிக்கை-மட்டும் பயன்முறையை இயக்க, `Content-Security-Policy` தலைப்புக்குப் பதிலாக `Content-Security-Policy-Report-Only` HTTP தலைப்பைப் பயன்படுத்தவும்.
உதாரணம்:
Content-Security-Policy-Report-Only: default-src 'self'; report-uri /csp-report-endpoint;
இந்த கட்டமைப்பு எந்த ஆதாரத்தையும் தடுக்காமல் `/csp-report-endpoint` க்கு அறிக்கைகளை அனுப்பும்.
CSP ஐ செயல்படுத்துவதற்கான சிறந்த நடைமுறைகள்
CSP ஐ திறம்பட செயல்படுத்துவதற்கான சில சிறந்த நடைமுறைகள் இங்கே:
- கடுமையான கொள்கையுடன் தொடங்கவும்: அதே மூலத்திலிருந்து ஆதாரங்களை மட்டும் அனுமதிக்கும் கட்டுப்பாடான கொள்கையுடன் தொடங்கி, தேவைக்கேற்ப படிப்படியாக அதை தளர்த்தவும்.
- வரிசை ஸ்கிரிப்டுகள் மற்றும் ஸ்டைல்களுக்கு Nonce அல்லது ஹேஷ்களைப் பயன்படுத்தவும்: `'unsafe-inline'` ஐப் பயன்படுத்துவதைத் தவிர்க்கவும் மற்றும் குறிப்பிட்ட வரிசை ஸ்கிரிப்டுகள் மற்றும் ஸ்டைல்களை அனுமதிக்க nonce அல்லது ஹேஷ்களைப் பயன்படுத்தவும்.
- `'unsafe-eval'` ஐத் தவிர்க்கவும்: முடிந்தால், `'unsafe-eval'` ஐப் பயன்படுத்துவதைத் தவிர்க்கவும், ஏனெனில் இது பாதுகாப்பு அபாயங்களை அறிமுகப்படுத்தக்கூடும். மாறும் குறியீடு இயக்கத்திற்கான மாற்று அணுகுமுறைகளைக் கவனியுங்கள்.
- HTTPS ஐப் பயன்படுத்தவும்: நடுவில் உள்ள மனிதன் தாக்குதல்களைத் தடுக்க அனைத்து ஆதாரங்களும் HTTPS இல் ஏற்றப்படுவதை உறுதிசெய்யவும். பாதுகாப்பற்ற கோரிக்கைகளை தானாக மேம்படுத்த `upgrade-insecure-requests` உத்தரவைப் பயன்படுத்தவும்.
- CSP மீறல்களை கண்காணிக்கவும்: CSP மீறல்களைக் கண்காணிக்கவும், சாத்தியமான பாதுகாப்பு சிக்கல்களைக் கண்டறியவும் ஒரு அறிக்கையிடும் இறுதிப்புள்ளியை அமைக்கவும்.
- உங்கள் CSP ஐ முழுமையாகச் சோதிக்கவும்: அது எதிர்பார்த்தபடி செயல்படுகிறதா என்பதை உறுதிப்படுத்த வெவ்வேறு உலாவிகள் மற்றும் சூழல்களில் உங்கள் CSP ஐச் சோதிக்கவும்.
- திரும்பத் திரும்பச் செம்மைப்படுத்தவும்: CSP செயல்படுத்தல் ஒரு தொடர்ச்சியான செயல்முறையாகும். உங்கள் பயன்பாடு உருவாகும்போது உங்கள் CSP ஐ தொடர்ந்து கண்காணிக்கவும் செம்மைப்படுத்தவும்.
- `strict-dynamic` உத்தரவைக் கவனியுங்கள்: நம்பகமான ஸ்கிரிப்டுகளால் ஏற்றப்பட்ட ஸ்கிரிப்டுகளுக்கு நம்பிக்கையை பரப்புவதன் மூலம் உங்கள் CSP இன் சிக்கலைக் குறைக்க `strict-dynamic` ஐப் பயன்படுத்தவும்.
CSP க்கான கருவிகள்
CSP ஐ உருவாக்க, சோதிக்க மற்றும் கண்காணிக்க உதவும் பல கருவிகள் உள்ளன:
- CSP ஜெனரேட்டர்கள்: உங்கள் வலைத்தளத்தின் ஆதாரங்களின் அடிப்படையில் CSP உத்தரவுகளை உருவாக்கும் ஆன்லைன் கருவிகள்.
- உலாவி டெவலப்பர் கருவிகள்: பெரும்பாலான நவீன உலாவிகள் CSP மீறல்களை பகுப்பாய்வு செய்ய உதவும் டெவலப்பர் கருவிகளை வழங்குகின்றன.
- CSP கண்காணிப்பு சேவைகள்: CSP மீறல் அறிக்கைகளை சேகரித்து பகுப்பாய்வு செய்யும் சேவைகள்.
CSP மற்றும் கட்டமைப்புகள்/நூலகங்கள்
கட்டமைப்புகளையும் நூலகங்களையும் பயன்படுத்தும் போது, இணக்கத்தன்மையை உறுதிப்படுத்தவும் பாதுகாப்பு சிக்கல்களைத் தடுக்கவும் CSP ஐ சரியாக உள்ளமைப்பது முக்கியம். சில கருத்தில் கொள்ள வேண்டியவை இங்கே:
- ஜாவாஸ்கிரிப்ட் கட்டமைப்புகள் (எ.கா., React, Angular, Vue.js): இந்த கட்டமைப்புகள் பெரும்பாலும் வரிசை ஸ்டைல்களை அல்லது மாறும் குறியீடு உருவாக்கத்தைப் பயன்படுத்துகின்றன, இதற்கு சிறப்பு CSP கட்டமைப்புகள் தேவைப்படலாம் (எ.கா., nonce, ஹேஷ்கள், `'unsafe-eval'`).
- CSS கட்டமைப்புகள் (எ.கா., Bootstrap, Tailwind CSS): இந்த கட்டமைப்புகள் வரிசை ஸ்டைல்கள் அல்லது வெளிப்புற ஸ்டைல்ஷீட்களைப் பயன்படுத்தக்கூடும், அவை உங்கள் CSP இல் அனுமதிக்கப்பட வேண்டும்.
- மூன்றாம் தரப்பு நூலகங்கள்: நீங்கள் பயன்படுத்தும் எந்த மூன்றாம் தரப்பு நூலகங்களும் உங்கள் CSP உடன் இணக்கமாக உள்ளனவா என்பதையும் பாதுகாப்பு பாதிப்புகளை அறிமுகப்படுத்தாது என்பதையும் உறுதிப்படுத்தவும்.
CSP மற்றும் CDNs (உள்ளடக்க விநியோக நெட்வொர்க்குகள்)
JavaScript கோப்புகள், CSS ஸ்டைல்ஷீட்கள் மற்றும் படங்கள் போன்ற நிலையான சொத்துக்களை ஹோஸ்ட் செய்ய CDNs பொதுவாகப் பயன்படுத்தப்படுகின்றன. உங்கள் CSP இல் CDN களில் இருந்து ஆதாரங்களை அனுமதிக்க, நீங்கள் CDN களங்களை வெளிப்படையாக வெள்ளைப்பட்டியலில் சேர்க்க வேண்டும்.
உதாரணம்:
Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.jsdelivr.net; style-src 'self' https://cdnjs.cloudflare.com;
இந்தக் கொள்கை jsDelivr இலிருந்து ஸ்கிரிப்டுகளையும், Cloudflare இன் cdnjs இலிருந்து ஸ்டைல்களையும் அனுமதிக்கிறது.
தவிர்க்க வேண்டிய பொதுவான CSP தவறுகள்
தவிர்க்க வேண்டிய சில பொதுவான CSP தவறுகள் இங்கே:
- `*` ஐ ஒரு ஆதாரமாகப் பயன்படுத்துதல்: எந்த மூலத்திலிருந்தும் ஆதாரங்களை அனுமதிப்பது CSP இன் நன்மைகளை ரத்து செய்யக்கூடும்.
- நியாயப்படுத்தாமல் `'unsafe-inline'` மற்றும் `'unsafe-eval'` ஐப் பயன்படுத்துதல்: இந்த உத்தரவுகள் பாதுகாப்பு அபாயங்களை அறிமுகப்படுத்தக்கூடும் மற்றும் முடிந்தால் தவிர்க்கப்பட வேண்டும்.
- CSP மீறல்களைக் கண்காணிக்கவில்லை: CSP மீறல்களைக் கண்காணிக்கத் தவறினால் பாதுகாப்பு சிக்கல்களை அடையாளம் கண்டு தீர்க்க முடியாமல் போகலாம்.
- CSP ஐ முழுமையாகச் சோதிக்கவில்லை: போதிய சோதனை எதிர்பாராத நடத்தை மற்றும் பாதுகாப்பு பாதிப்புகளுக்கு வழிவகுக்கும்.
- Nonces மற்றும் ஹேஷ்களை தவறாக உள்ளமைத்தல்: தவறாக உள்ளமைக்கப்பட்ட nonces மற்றும் ஹேஷ்கள் முறையான ஸ்கிரிப்டுகள் மற்றும் ஸ்டைல்களை ஏற்றவிடாமல் தடுக்கலாம்.
மேம்பட்ட CSP கருத்துக்கள்
அடிப்படைகளுக்கு அப்பால், பல மேம்பட்ட CSP கருத்துக்கள் உங்கள் இணைய பாதுகாப்பை மேலும் மேம்படுத்தலாம்:
- `frame-ancestors` உத்தரவு: உங்கள் பக்கத்தில் ஒரு சட்டத்தை (iframe) உட்பொதிக்கக்கூடிய அனுமதிக்கப்பட்ட பெற்றோர்களைக் குறிப்பிடுகிறது. கிளிக்ஜேக்கிங் தாக்குதல்களிலிருந்து பாதுகாக்கிறது.
- `sandbox` உத்தரவு: கோரப்பட்ட ஆதாரத்திற்கு ஒரு சாண்ட்பாக்ஸை செயல்படுத்துகிறது, அதன் திறன்களில் கட்டுப்பாடுகளைப் பயன்படுத்துகிறது (எ.கா., ஸ்கிரிப்ட் செயலிழப்பைத் தடுப்பது, படிவம் சமர்ப்பிப்பு).
- `require-sri-for` உத்தரவு: வெளிப்புற ஆதாரங்களிலிருந்து ஏற்றப்பட்ட ஸ்கிரிப்டுகள் அல்லது ஸ்டைல்களுக்கு துணை ஆதார ஒருமைப்பாடு (SRI) தேவைப்படுகிறது. கோப்புகள் சேதப்படுத்தப்படவில்லை என்பதை SRI உறுதி செய்கிறது.
- நம்பகமான வகைகள் API: DOM மூழ்குகளில் வகை பாதுகாப்பை உறுதிப்படுத்துவதன் மூலம் DOM அடிப்படையிலான XSS ஐத் தடுக்க உதவுகிறது.
CSP இன் எதிர்காலம்
புதிய பாதுகாப்பு சவால்களை எதிர்கொள்ள CSP தொடர்ந்து உருவாகி வருகிறது. எதிர்கால மேம்பாடுகளில் பின்வருவன அடங்கும்:
- மேம்படுத்தப்பட்ட உலாவி ஆதரவு: CSP அம்சங்களுக்கான உலாவி ஆதரவில் தொடர்ச்சியான மேம்பாடுகள்.
- புதிய உத்தரவுகள் மற்றும் அம்சங்கள்: வளர்ந்து வரும் பாதுகாப்பு அச்சுறுத்தல்களை நிவர்த்தி செய்ய புதிய உத்தரவுகள் மற்றும் அம்சங்களின் அறிமுகம்.
- பாதுகாப்புக் கருவிகளுடன் ஒருங்கிணைப்பு: CSP மேலாண்மை மற்றும் கண்காணிப்பை தானியங்குபடுத்த பாதுகாப்புக் கருவிகள் மற்றும் தளங்களுடன் ஆழமான ஒருங்கிணைப்பு.
முடிவுரை
உள்ளடக்க பாதுகாப்பு கொள்கை (CSP) என்பது XSS தாக்குதல்களைக் குறைப்பதற்கும் இணைய பாதுகாப்பை மேம்படுத்துவதற்கும் ஒரு சக்திவாய்ந்த கருவியாகும். கடுமையான CSP ஐ வரையறுப்பதன் மூலம், உங்கள் வலை பயன்பாட்டின் தாக்குதல் மேற்பரப்பை கணிசமாகக் குறைக்கலாம் மற்றும் உங்கள் பயனர்களை தீங்கிழைக்கும் குறியீட்டிலிருந்து பாதுகாக்கலாம். CSP ஐ திறம்பட செயல்படுத்த கவனமாக திட்டமிடல், முழுமையான சோதனை மற்றும் தொடர்ச்சியான கண்காணிப்பு தேவைப்படுகிறது. இந்த வழிகாட்டியில் கோடிட்டுக் காட்டப்பட்டுள்ள சிறந்த நடைமுறைகளைப் பின்பற்றுவதன் மூலம், உங்கள் வலை பயன்பாடுகளின் பாதுகாப்பு நிலையை மேம்படுத்தவும், உலகளாவிய டிஜிட்டல் சுற்றுச்சூழல் அமைப்பில் உங்கள் ஆன்லைன் இருப்பைப் பாதுகாக்கவும் CSP ஐப் பயன்படுத்தலாம்.
வளர்ந்து வரும் பாதுகாப்பு அச்சுறுத்தல்களுக்கு ஏற்றவாறு உங்கள் CSP ஐ தவறாமல் மதிப்பாய்வு செய்து புதுப்பிக்க நினைவில் கொள்ளுங்கள், மேலும் உங்கள் வலை பயன்பாடுகள் பாதுகாக்கப்படுவதை உறுதிப்படுத்தவும்.