உள்ளடக்க பாதுகாப்பு கொள்கை (CSP) மற்றும் பிற ஃபிரன்ட்எண்ட் பாதுகாப்பு தலைப்புகள் பற்றிய ஒரு விரிவான வழிகாட்டி. இது வலைப் பயன்பாடுகளை தாக்குதல்களிலிருந்து பாதுகாத்து, உலகளவில் பயனர் பாதுகாப்பை மேம்படுத்துகிறது.
ஃபிரன்ட்எண்ட் பாதுகாப்பு தலைப்புகள்: உள்ளடக்க பாதுகாப்பு கொள்கையில் (CSP) தேர்ச்சி பெறுதல்
இன்றைய டிஜிட்டல் உலகில், வலைப் பயன்பாடுகள் மிகவும் சிக்கலானதாகவும் ஒன்றோடொன்று இணைக்கப்பட்டதாகவும் இருப்பதால், பாதுகாப்பு அச்சுறுத்தல்களுக்கு எதிராகப் பாதுகாப்பது மிக முக்கியம். பின்தள பாதுகாப்புக்கு (backend security) அதிக கவனம் செலுத்தப்பட்டாலும், ஃபிரன்ட்எண்ட் பாதுகாப்பும் சமமாக முக்கியமானது. ஃபிரன்ட்எண்ட் பாதுகாப்பு தலைப்புகள் (Frontend security headers) முதல் பாதுகாப்பு அரணாக செயல்படுகின்றன, உலாவி எவ்வாறு நடந்துகொள்ள வேண்டும் மற்றும் பல்வேறு தாக்குதல்களில் இருந்து பயனர்களைப் பாதுகாக்க வேண்டும் என்று அறிவுறுத்துவதற்கான ஒரு வழிமுறையை வழங்குகின்றன. இந்த தலைப்புகளில், உள்ளடக்க பாதுகாப்பு கொள்கை (Content Security Policy - CSP) பரந்த அளவிலான அபாயங்களைக் குறைப்பதற்கான ஒரு சக்திவாய்ந்த கருவியாக விளங்குகிறது.
ஃபிரன்ட்எண்ட் பாதுகாப்பு தலைப்புகள் என்றால் என்ன?
ஃபிரன்ட்எண்ட் பாதுகாப்பு தலைப்புகள் என்பது ஒரு வலை சேவையகம் உலாவிக்கு அனுப்பும் HTTP மறுமொழி தலைப்புகள் (HTTP response headers) ஆகும். இந்த தலைப்புகளில், உலாவி பெறும் உள்ளடக்கத்தை எவ்வாறு கையாள வேண்டும் என்பதற்கான வழிமுறைகள் உள்ளன. அவை போன்ற பொதுவான தாக்குதல்களைத் தடுக்க உதவுகின்றன:
- குறுக்கு-தள ஸ்கிரிப்டிங் (Cross-Site Scripting - XSS): நம்பகமான வலைத்தளங்களில் தீங்கிழைக்கும் ஸ்கிரிப்ட்களைச் செருகுதல்.
- கிளிக்ஜாக்கிங் (Clickjacking): பயனர்கள் தாங்கள் உணர்வதை விட வேறுபட்ட ஒன்றைக் கிளிக் செய்யும்படி ஏமாற்றுவது.
- மேன்-இன்-தி-மிடில் தாக்குதல்கள் (Man-in-the-Middle Attacks): பயனருக்கும் சேவையகத்திற்கும் இடையிலான தகவல்தொடர்புகளை இடைமறித்தல்.
மிக முக்கியமான சில ஃபிரன்ட்எண்ட் பாதுகாப்பு தலைப்புகள் பின்வருமாறு:
- உள்ளடக்க பாதுகாப்பு கொள்கை (Content Security Policy - CSP): உலாவி எந்த மூலங்களிலிருந்து வளங்களை ஏற்ற அனுமதிக்கப்படுகிறது என்பதை வரையறுக்கிறது.
- ஸ்ட்ரிக்ட்-டிரான்ஸ்போர்ட்-செக்யூரிட்டி (Strict-Transport-Security - HSTS): வலைத்தளத்துடனான அனைத்து தகவல்தொடர்புகளுக்கும் HTTPS ஐப் பயன்படுத்த உலாவியை கட்டாயப்படுத்துகிறது.
- X-ஃபிரேம்-ஆப்ஷன்ஸ் (X-Frame-Options): வலைத்தளத்தை ஒரு iframe இல் உட்பொதிப்பதைத் தடுக்கிறது, கிளிக்ஜாக்கிங் தாக்குதல்களைக் குறைக்கிறது.
- X-XSS-பாதுகாப்பு (X-XSS-Protection): உலாவியின் உள்ளமைக்கப்பட்ட XSS வடிப்பானை இயக்குகிறது. (குறிப்பு: இது பெரும்பாலும் CSP ஆல் மாற்றப்படுகிறது, ஆனால் இன்னும் ஒரு பாதுகாப்பு அடுக்கை வழங்க முடியும்).
- ரெஃபரர்-கொள்கை (Referrer-Policy): கோரிக்கைகளுடன் அனுப்பப்படும் ரெஃபரர் தகவலின் அளவைக் கட்டுப்படுத்துகிறது.
- அம்சக்-கொள்கை (Feature-Policy) (இப்போது அனுமதிகள்-கொள்கை - Permissions-Policy): டெவலப்பர்களை உலாவி அம்சங்கள் மற்றும் APIகளைத் தேர்ந்தெடுத்து இயக்கவும் முடக்கவும் அனுமதிக்கிறது.
உள்ளடக்க பாதுகாப்பு கொள்கை (CSP) பற்றி ஆழமாக அறிதல்
உள்ளடக்க பாதுகாப்பு கொள்கை (CSP) என்பது ஒரு HTTP மறுமொழி தலைப்பு ஆகும், இது ஒரு குறிப்பிட்ட பக்கத்திற்கு பயனர் முகவர் (user agent) எந்தெந்த வளங்களை ஏற்ற அனுமதிக்கப்படுகிறது என்பதைக் கட்டுப்படுத்துகிறது. இது அடிப்படையில் அங்கீகரிக்கப்பட்ட உள்ளடக்கத்தின் மூலங்களை வெள்ளைப் பட்டியலில் (whitelist) சேர்க்கிறது, இது XSS தாக்குதல்களின் அபாயத்தை கணிசமாகக் குறைக்கிறது. ஸ்கிரிப்ட்கள், ஸ்டைல்ஷீட்கள், படங்கள் மற்றும் எழுத்துருக்கள் போன்ற வளங்களை எந்த மூலங்களிலிருந்து ஏற்றலாம் என்பதை வெளிப்படையாக வரையறுப்பதன் மூலம், தாக்குபவர்கள் உங்கள் வலைத்தளத்தில் தீங்கிழைக்கும் குறியீட்டைச் செருகுவதை CSP மிகவும் கடினமாக்குகிறது.
CSP எவ்வாறு செயல்படுகிறது
CSP, பல்வேறு வகையான உள்ளடக்கங்களுக்கான அங்கீகரிக்கப்பட்ட மூலங்களின் பட்டியலை உலாவிக்கு வழங்குவதன் மூலம் செயல்படுகிறது. உலாவி CSP-ஐ மீறும் ஒரு வளத்தை எதிர்கொள்ளும்போது, அது அந்த வளத்தைத் தடுத்து, மீறலைப் புகாரளிக்கிறது. இந்தத் தடுப்பு பொறிமுறையானது, ஒரு தாக்குபவர் HTML இல் தீங்கிழைக்கும் குறியீட்டைச் செருக முடிந்தாலும், அது இயக்கப்படுவதைத் தடுக்கிறது.
CSP வழிகாட்டுதல்கள் (Directives)
CSP வழிகாட்டுதல்கள் ஒரு CSP கொள்கையின் முக்கிய கூறுகளாகும். அவை பல்வேறு வகையான வளங்களுக்கான அனுமதிக்கப்பட்ட மூலங்களைக் குறிப்பிடுகின்றன. மிகவும் பொதுவாகப் பயன்படுத்தப்படும் சில வழிகாட்டுதல்கள் பின்வருமாறு:
- default-src: அனைத்து வள வகைகளுக்கும் இயல்புநிலை மூலத்தை அமைக்கிறது. இது மற்ற குறிப்பிட்ட வழிகாட்டுதல்கள் வரையறுக்கப்படாதபோது பயன்படுத்தப்படும் ஒரு பின்னடைவு வழிகாட்டுதல் ஆகும்.
- script-src: ஜாவாஸ்கிரிப்ட்டுக்கான அனுமதிக்கப்பட்ட மூலங்களைக் குறிப்பிடுகிறது.
- style-src: CSS ஸ்டைல்ஷீட்களுக்கான அனுமதிக்கப்பட்ட மூலங்களைக் குறிப்பிடுகிறது.
- img-src: படங்களுக்கான அனுமதிக்கப்பட்ட மூலங்களைக் குறிப்பிடுகிறது.
- font-src: எழுத்துருக்களுக்கான அனுமதிக்கப்பட்ட மூலங்களைக் குறிப்பிடுகிறது.
- media-src: ஆடியோ மற்றும் வீடியோவுக்கான அனுமதிக்கப்பட்ட மூலங்களைக் குறிப்பிடுகிறது.
- object-src: Flash போன்ற செருகுநிரல்களுக்கான (plugins) அனுமதிக்கப்பட்ட மூலங்களைக் குறிப்பிடுகிறது. (முடிந்தால் செருகுநிரல்களை அனுமதிப்பதைத் தவிர்ப்பது நல்லது).
- frame-src: ஃபிரேம்களுக்கான (iframes) அனுமதிக்கப்பட்ட மூலங்களைக் குறிப்பிடுகிறது.
- connect-src: நெட்வொர்க் கோரிக்கைகளுக்கான (AJAX, WebSockets) அனுமதிக்கப்பட்ட மூலங்களைக் குறிப்பிடுகிறது.
- base-uri: ஒரு
<base>உறுப்பில் பயன்படுத்தக்கூடிய URLகளைக் கட்டுப்படுத்துகிறது. - form-action: படிவங்கள் சமர்ப்பிக்கக்கூடிய URLகளைக் கட்டுப்படுத்துகிறது.
- frame-ancestors:
<frame>,<iframe>,<object>,<embed>, அல்லது<applet>பயன்படுத்தி ஒரு பக்கத்தை உட்பொதிக்கக்கூடிய செல்லுபடியாகும் பெற்றோர்களைக் குறிப்பிடுகிறது. இந்த வழிகாட்டுதல் கிளிக்ஜாக்கிங்கிற்கு எதிராகப் பாதுகாப்பு வழங்குகிறது. - upgrade-insecure-requests: ஒரு தளத்தின் பாதுகாப்பற்ற URLகள் (HTTP வழியாக ஏற்றப்பட்டது) அனைத்தும் பாதுகாப்பான URLகளாக (HTTPS வழியாக ஏற்றப்பட்டது) மாற்றப்பட்டதாகக் கருதி செயல்பட பயனர் முகவர்களுக்கு அறிவுறுத்துகிறது. இந்த வழிகாட்டுதல் HTTP-லிருந்து HTTPS-க்கு மாறும் செயல்பாட்டில் உள்ள வலைத்தளங்களுக்காக வடிவமைக்கப்பட்டுள்ளது.
- report-uri: உலாவி CSP மீறல்கள் பற்றிய அறிக்கைகளை அனுப்ப வேண்டிய ஒரு URL-ஐக் குறிப்பிடுகிறது. `report-to`-க்கு ஆதரவாக இது வழக்கற்றுப் போய்விட்டது.
- report-to: ஒரு `Report-To` தலைப்பில் வரையறுக்கப்பட்ட குழுவின் பெயரைக் குறிப்பிடுகிறது. இது பல அறிக்கை முனையங்களைக் குறிப்பிடுவது உட்பட, அறிக்கையிடலின் மீது நுணுக்கமான கட்டுப்பாட்டை அனுமதிக்கிறது.
CSP மூல மதிப்புகள் (Source Values)
மூல மதிப்புகள், எந்த மூலங்களிலிருந்து வளங்களை ஏற்ற அனுமதிக்கப்படுகிறது என்பதை வரையறுக்கின்றன. சில பொதுவான மூல மதிப்புகள் பின்வருமாறு:
- *: எந்த மூலத்திலிருந்தும் உள்ளடக்கத்தை அனுமதிக்கிறது (இதை உற்பத்திச் சூழலில் பயன்படுத்த வேண்டாம்!).
- 'self': பாதுகாக்கப்பட்ட ஆவணத்தின் அதே மூலத்திலிருந்து (scheme, host, and port) உள்ளடக்கத்தை அனுமதிக்கிறது.
- 'none': எந்த மூலத்திலிருந்தும் உள்ளடக்கத்தை அனுமதிக்காது.
- 'unsafe-inline': இன்லைன் ஜாவாஸ்கிரிப்ட் மற்றும் CSS பயன்பாட்டை அனுமதிக்கிறது (இதை உற்பத்திச் சூழலில் பயன்படுத்த வேண்டாம்!).
- 'unsafe-eval': டைனமிக் குறியீடு மதிப்பீட்டின் பயன்பாட்டை அனுமதிக்கிறது (எ.கா.,
eval(),Function()) (இதை உற்பத்திச் சூழலில் பயன்படுத்த வேண்டாம்!). - 'strict-dynamic': ஒரு ஸ்கிரிப்ட்டிற்கு ஒரு நான்ஸ் அல்லது ஹாஷ் உடன் வெளிப்படையாக வழங்கப்படும் நம்பிக்கையை, அந்த மூதாதையர் மூலம் ஏற்றப்படும் அனைத்து ஸ்கிரிப்ட்களுக்கும் பரப்ப வேண்டும் என்பதைக் குறிப்பிடுகிறது.
- 'unsafe-hashes': குறிப்பிட்ட இன்லைன் நிகழ்வு கையாளுபவர்களை (event handlers) அனுமதிக்கிறது. இதன் சிக்கலான தன்மை மற்றும் குறைந்த நன்மை காரணமாக இது பொதுவாக ஊக்கப்படுத்தப்படுவதில்லை.
- data:: தரவு URLகளிலிருந்து (எ.கா., உட்பொதிக்கப்பட்ட படங்கள்) வளங்களை ஏற்றுவதை அனுமதிக்கிறது. எச்சரிக்கையுடன் பயன்படுத்தவும்.
- mediastream:: `mediastream:` URIகளை ஒரு ஊடக மூலமாகப் பயன்படுத்த அனுமதிக்கிறது.
- blob:: `blob:` URIகளை ஒரு ஊடக மூலமாகப் பயன்படுத்த அனுமதிக்கிறது.
- filesystem:: ஒரு கோப்பு முறைமையிலிருந்து வளங்களை ஏற்ற அனுமதிக்கிறது.
- https://example.com: ஒரு குறிப்பிட்ட டொமைன் மற்றும் போர்ட்டிலிருந்து உள்ளடக்கத்தை அனுமதிக்கிறது.
- *.example.com: example.com-இன் எந்த துணை டொமைனிலிருந்தும் உள்ளடக்கத்தை அனுமதிக்கிறது.
- nonce-{random-value}: பொருந்தும் நான்ஸ் பண்புக்கூறு கொண்ட ஸ்கிரிப்ட்கள் அல்லது ஸ்டைல்களை அனுமதிக்கிறது. இதற்கு ஒவ்வொரு கோரிக்கைக்கும் சேவையகப் பக்கத்தில் ஒரு சீரற்ற நான்ஸ் மதிப்பை உருவாக்க வேண்டும்.
- sha256-{hash-value}: பொருந்தும் SHA256, SHA384, அல்லது SHA512 ஹாஷ் கொண்ட ஸ்கிரிப்ட்கள் அல்லது ஸ்டைல்களை அனுமதிக்கிறது.
CSP முறைகள்: செயல்படுத்துதல் (Enforce) மற்றும் அறிக்கை-மட்டும் (Report-Only)
CSP இரண்டு முறைகளில் பயன்படுத்தப்படலாம்:
- செயல்படுத்துதல் முறை (Enforce Mode): இந்த முறையில், உலாவி CSP-ஐ மீறும் எந்த வளங்களையும் தடுக்கிறது. இது உற்பத்திச் சூழல்களுக்கு (production environments) பரிந்துரைக்கப்படும் பயன்முறையாகும். CSP, `Content-Security-Policy` என்ற தலைப்பு மூலம் அனுப்பப்படுகிறது.
- அறிக்கை-மட்டும் முறை (Report-Only Mode): இந்த முறையில், உலாவி CSP மீறல்களைப் புகாரளிக்கிறது, ஆனால் வளங்களைத் தடுப்பதில்லை. இது ஒரு CSP-ஐ அமல்படுத்துவதற்கு முன்பு அதைச் சோதிப்பதற்கும் மதிப்பீடு செய்வதற்கும் பயனுள்ளதாக இருக்கும். CSP, `Content-Security-Policy-Report-Only` என்ற தலைப்பு மூலம் அனுப்பப்படுகிறது.
CSP-ஐ செயல்படுத்துதல்: ஒரு படிப்படியான வழிகாட்டி
CSP-ஐ செயல்படுத்துவது கடினமாகத் தோன்றலாம், ஆனால் ஒரு கட்டமைக்கப்பட்ட அணுகுமுறையைப் பின்பற்றுவதன் மூலம், உங்கள் வலைப் பயன்பாட்டை திறம்பட பாதுகாக்க முடியும்.
1. அறிக்கை-மட்டும் கொள்கையுடன் தொடங்கவும்
முதலில் அறிக்கை-மட்டும் பயன்முறையில் ஒரு CSP-ஐப் பயன்படுத்தத் தொடங்குங்கள். இது உங்கள் வலைத்தளத்தின் செயல்பாட்டை பாதிக்காமல் மீறல்களைக் கண்காணிக்க உங்களை அனுமதிக்கிறது. மீறல் அறிக்கைகளை ஒரு குறிப்பிட்ட முனையத்திற்கு அனுப்ப `report-uri` அல்லது `report-to` வழிகாட்டுதலை உள்ளமைக்கவும்.
எடுத்துக்காட்டு தலைப்பு (அறிக்கை-மட்டும்):
Content-Security-Policy-Report-Only: default-src 'self'; report-uri /csp-report
2. மீறல் அறிக்கைகளை பகுப்பாய்வு செய்யுங்கள்
எந்த வளங்கள் தடுக்கப்படுகின்றன மற்றும் ஏன் என்று கண்டறிய மீறல் அறிக்கைகளை கவனமாக பகுப்பாய்வு செய்யுங்கள். இது உங்கள் வலைத்தளத்தின் வள சார்புகளைப் புரிந்துகொள்ளவும், சாத்தியமான பாதுகாப்பு பாதிப்புகளைக் கண்டறியவும் உதவும்.
மீறல் அறிக்கைகள் பொதுவாக JSON பேலோடுகளாக உள்ளமைக்கப்பட்ட `report-uri` அல்லது `report-to` முனையத்திற்கு அனுப்பப்படுகின்றன. இந்த அறிக்கைகளில் தடுக்கப்பட்ட URI, மீறப்பட்ட வழிகாட்டுதல் மற்றும் ஆவண URI போன்ற மீறல் பற்றிய தகவல்கள் உள்ளன.
3. CSP கொள்கையைச் செம்மைப்படுத்தவும்
மீறல் அறிக்கைகளின் அடிப்படையில், ஒரு வலுவான பாதுகாப்பு நிலையைத் தக்க வைத்துக் கொண்டு, முறையான வளங்களை அனுமதிக்க உங்கள் CSP கொள்கையைச் செம்மைப்படுத்தவும். தடுக்கப்படும் வளங்களுக்கு குறிப்பிட்ட மூல மதிப்புகளைச் சேர்க்கவும். ` 'unsafe-inline'` பயன்படுத்துவதைத் தவிர்க்க, இன்லைன் ஸ்கிரிப்ட்கள் மற்றும் ஸ்டைல்களுக்கு நான்ஸ் அல்லது ஹாஷ்களைப் பயன்படுத்துவதைக் கருத்தில் கொள்ளுங்கள்.
4. செயல்படுத்துதல் பயன்முறைக்கு மாறவும்
உங்கள் CSP கொள்கை முறையான வளங்களைத் தடுக்கவில்லை என்று நீங்கள் நம்பியவுடன், செயல்படுத்துதல் பயன்முறைக்கு மாறவும். இது மீதமுள்ள மீறல்களைத் தடுத்து, XSS தாக்குதல்களுக்கு எதிராக ஒரு வலுவான பாதுகாப்பு அடுக்கை வழங்கும்.
எடுத்துக்காட்டு தலைப்பு (செயல்படுத்துதல்):
Content-Security-Policy: default-src 'self'; script-src 'self' https://example.com; style-src 'self' 'unsafe-inline'; img-src 'self' data:; report-uri /csp-report
5. CSP கொள்கையை கண்காணித்து பராமரிக்கவும்
CSP என்பது ஒரு முறை அமைத்து மறந்துவிடும் தீர்வு அல்ல. உங்கள் CSP கொள்கையைத் தொடர்ந்து கண்காணித்து, உங்கள் வலைத்தளம் உருவாகும்போது மற்றும் புதிய பாதுகாப்பு அச்சுறுத்தல்கள் வெளிப்படும்போது அதை புதுப்பிப்பது அவசியம். மீறல் அறிக்கைகளைத் தவறாமல் மதிப்பாய்வு செய்து, தேவைக்கேற்ப கொள்கையைச் சரிசெய்யவும்.
நடைமுறை CSP எடுத்துக்காட்டுகள்
பல்வேறு சூழ்நிலைகளுக்கான சில நடைமுறை CSP எடுத்துக்காட்டுகளைப் பார்ப்போம்:
எடுத்துக்காட்டு 1: ஒரு எளிய வலைத்தளத்திற்கான அடிப்படை CSP
இந்த CSP ஒரே மூலத்திலிருந்து உள்ளடக்கத்தை அனுமதிக்கிறது மற்றும் எந்த மூலத்திலிருந்தும் படங்களை அனுமதிக்கிறது.
Content-Security-Policy: default-src 'self'; img-src *
எடுத்துக்காட்டு 2: குறிப்பிட்ட ஸ்கிரிப்ட் மற்றும் ஸ்டைல் மூலங்களுடன் CSP
இந்த CSP ஒரே மூலத்திலிருந்தும் ஒரு குறிப்பிட்ட CDN-லிருந்தும் ஸ்கிரிப்ட்களை அனுமதிக்கிறது, மேலும் ஒரே மூலத்திலிருந்தும் இன்லைன் ஸ்டைல்களையும் அனுமதிக்கிறது.
Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com; style-src 'self' 'unsafe-inline'
எடுத்துக்காட்டு 3: இன்லைன் ஸ்கிரிப்ட்களுக்கான நான்ஸ்களுடன் கூடிய CSP
இந்த CSP ஒவ்வொரு இன்லைன் ஸ்கிரிப்ட்டுக்கும் ஒரு தனித்துவமான நான்ஸ் தேவைப்படுகிறது.
Content-Security-Policy: default-src 'self'; script-src 'self' 'nonce-r4nd0mn0nc3'
HTML:
<script nonce="r4nd0mn0nc3">console.log('Hello, world!');</script>
முக்கியமானது: நான்ஸ் மதிப்பு ஒவ்வொரு கோரிக்கைக்கும் சேவையகத்தில் மாறும் வகையில் உருவாக்கப்பட வேண்டும். இது தாக்குபவர்கள் நான்ஸை மீண்டும் பயன்படுத்துவதைத் தடுக்கிறது.
எடுத்துக்காட்டு 4: கிளிக்ஜாக்கிங்கைத் தடுக்க ஃபிரேம் மூதாதையர்களைக் கட்டுப்படுத்தும் CSP
இந்த CSP, `https://example.com` தவிர வேறு எந்த டொமைனிலும் iframe-இல் பக்கம் உட்பொதிக்கப்படுவதைத் தடுக்கிறது.
Content-Security-Policy: frame-ancestors 'self' https://example.com
எடுத்துக்காட்டு 5: 'strict-dynamic' மற்றும் 'self'-க்கு ஒரு பின்னடைவைப் பயன்படுத்தி மிகவும் கட்டுப்படுத்தப்பட்ட CSP
இந்த CSP நவீன உலாவிகளுக்கு `strict-dynamic`-ஐப் பயன்படுத்துகிறது, அதே நேரத்தில் அதை ஆதரிக்காத பழைய உலாவிகளுக்கும் ஆதரவளிக்கிறது. மீறல்களைக் கண்காணிக்க இது ஒரு `report-uri`-யையும் கொண்டுள்ளது.
Content-Security-Policy: default-src 'self'; script-src 'strict-dynamic' 'nonce-{random-nonce}' 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; report-uri /csp-report
சேவையகப் பக்கத்தில் `{random-nonce}`-க்கு பதிலாக மாறும் வகையில் உருவாக்கப்பட்ட நான்ஸ் மதிப்பைப் பயன்படுத்த நினைவில் கொள்ளுங்கள்.
CSP மற்றும் ஒற்றைப் பக்க பயன்பாடுகள் (SPAs)
SPAs-இல் CSP-ஐ செயல்படுத்துவது இந்த பயன்பாடுகளின் மாறும் தன்மை காரணமாக சவாலாக இருக்கலாம். SPAs பெரும்பாலும் DOM-ஐ உருவாக்க மற்றும் கையாள ஜாவாஸ்கிரிப்டை பெரிதும் நம்பியுள்ளன, இது கவனமாகக் கையாளப்படாவிட்டால் CSP மீறல்களுக்கு வழிவகுக்கும்.
SPAs-இல் CSP-ஐ செயல்படுத்துவதற்கான சில குறிப்புகள் இங்கே:
'unsafe-inline'மற்றும்'unsafe-eval'-ஐத் தவிர்க்கவும்: இந்த வழிகாட்டுதல்கள் SPAs-இல் முடிந்தவரை தவிர்க்கப்பட வேண்டும். அவை உங்கள் பயன்பாட்டின் பாதுகாப்பை கணிசமாகக் பலவீனப்படுத்துகின்றன.- நான்ஸ் அல்லது ஹாஷ்களைப் பயன்படுத்தவும்: இன்லைன் ஸ்கிரிப்ட்கள் மற்றும் ஸ்டைல்களுக்கு நான்ஸ் அல்லது ஹாஷ்களைப் பயன்படுத்தவும். இது SPAs-க்கு பரிந்துரைக்கப்படும் அணுகுமுறையாகும்.
- நம்பகமான வகைகளைக் (Trusted Types) கருத்தில் கொள்ளுங்கள்: நம்பகமான வகைகள் என்பது DOM-அடிப்படையிலான XSS பாதிப்புகளைத் தடுக்க உதவும் ஒரு உலாவி API ஆகும். பாதுகாப்பை மேலும் மேம்படுத்த இது CSP உடன் இணைந்து பயன்படுத்தப்படலாம்.
- CSP-இணக்கமான கட்டமைப்பைப் பயன்படுத்தவும்: சில ஃபிரன்ட்எண்ட் கட்டமைப்புகள் (குறிப்பிட்ட உள்ளமைவுகளுடன் கூடிய React, Angular, மற்றும் Vue.js போன்றவை) CSP-ஐ எளிதாக செயல்படுத்த உதவும் அம்சங்களை வழங்குகின்றன.
பிற முக்கியமான ஃபிரன்ட்எண்ட் பாதுகாப்பு தலைப்புகள்
CSP ஃபிரன்ட்எண்ட் பாதுகாப்பின் ஒரு மூலக்கல்லாக இருந்தாலும், ஒரு விரிவான பாதுகாப்பு உத்தியை வழங்குவதில் மற்ற தலைப்புகளும் முக்கிய பங்கு வகிக்கின்றன:
ஸ்ட்ரிக்ட்-டிரான்ஸ்போர்ட்-செக்யூரிட்டி (Strict-Transport-Security - HSTS)
Strict-Transport-Security (HSTS) தலைப்பு, வலைத்தளத்துடன் இணைவதற்கு எப்போதும் HTTPS-ஐப் பயன்படுத்தும்படி உலாவிக்கு அறிவுறுத்துகிறது. இது இணைப்பை HTTP-க்கு தரமிறக்க முயற்சிக்கும் மேன்-இன்-தி-மிடில் தாக்குதல்களைத் தடுக்கிறது.
எடுத்துக்காட்டு தலைப்பு:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
max-age: உலாவி தளத்தை HTTPS வழியாக மட்டுமே அணுக வேண்டும் என்பதை நினைவில் வைத்திருக்க வேண்டிய கால அளவை (வினாடிகளில்) குறிப்பிடுகிறது. உற்பத்திச் சூழல்களுக்கு 31536000 வினாடிகள் (1 வருடம்) மதிப்பு பரிந்துரைக்கப்படுகிறது.includeSubDomains: HSTS கொள்கை டொமைனின் அனைத்து துணை டொமைன்களுக்கும் பொருந்தும் என்பதைக் குறிக்கிறது.preload: உலாவிகளில் முன்பே ஏற்றப்பட்ட HSTS-இயக்கப்பட்ட டொமைன்களின் பட்டியலில் டொமைனைச் சேர்க்க அனுமதிக்கிறது. இதற்கு உங்கள் டொமைனை கூகிளால் பராமரிக்கப்படும் HSTS ப்ரீலோட் பட்டியலில் சமர்ப்பிக்க வேண்டும்.
X-ஃபிரேம்-ஆப்ஷன்ஸ் (X-Frame-Options)
X-Frame-Options தலைப்பு, வலைத்தளம் ஒரு iframe-இல் உட்பொதிக்கப்படலாமா என்பதைக் கட்டுப்படுத்துவதன் மூலம் கிளிக்ஜாக்கிங் தாக்குதல்களைத் தடுக்கிறது.
எடுத்துக்காட்டு தலைப்பு:
X-Frame-Options: DENY
சாத்தியமான மதிப்புகள்:
DENY: மூலம் எதுவாக இருந்தாலும், பக்கம் ஒரு iframe-இல் காட்டப்படுவதைத் தடுக்கிறது.SAMEORIGIN: iframe-இன் மூலம் பக்கத்தின் மூலத்துடன் பொருந்தினால் மட்டுமே பக்கம் ஒரு iframe-இல் காட்டப்பட அனுமதிக்கிறது.ALLOW-FROM uri: iframe-இன் மூலம் குறிப்பிட்ட URI-உடன் பொருந்தினால் மட்டுமே பக்கம் ஒரு iframe-இல் காட்டப்பட அனுமதிக்கிறது. குறிப்பு: இந்த விருப்பம் வழக்கற்றுப் போய்விட்டது மற்றும் எல்லா உலாவிகளாலும் ஆதரிக்கப்படாமல் இருக்கலாம்.
குறிப்பு: CSP-இல் உள்ள frame-ancestors வழிகாட்டுதல், ஃப்ரேமிங்கைக் கட்டுப்படுத்த மிகவும் நெகிழ்வான மற்றும் சக்திவாய்ந்த வழியை வழங்குகிறது, மேலும் இது பொதுவாக X-Frame-Options-ஐ விட விரும்பப்படுகிறது.
X-XSS-பாதுகாப்பு (X-XSS-Protection)
X-XSS-Protection தலைப்பு உலாவியின் உள்ளமைக்கப்பட்ட XSS வடிப்பானை இயக்குகிறது. XSS தாக்குதல்களைத் தடுப்பதற்கு CSP ஒரு வலுவான தீர்வாக இருந்தாலும், இந்த தலைப்பு ஒரு கூடுதல் பாதுகாப்பு அடுக்கை வழங்க முடியும், குறிப்பாக CSP-ஐ முழுமையாக ஆதரிக்காத பழைய உலாவிகளுக்கு.
எடுத்துக்காட்டு தலைப்பு:
X-XSS-Protection: 1; mode=block
1: XSS வடிப்பானை இயக்குகிறது.0: XSS வடிப்பானை முடக்குகிறது.mode=block: ஒரு XSS தாக்குதல் கண்டறியப்பட்டால் பக்கத்தைத் தடுக்குமாறு உலாவிக்கு அறிவுறுத்துகிறது.report=uri: ஒரு XSS தாக்குதல் கண்டறியப்பட்டால் உலாவி ஒரு அறிக்கையை அனுப்ப வேண்டிய URL-ஐக் குறிப்பிடுகிறது.
ரெஃபரர்-கொள்கை (Referrer-Policy)
Referrer-Policy தலைப்பு கோரிக்கைகளுடன் அனுப்பப்படும் ரெஃபரர் தகவலின் அளவைக் கட்டுப்படுத்துகிறது. ரெஃபரர் தகவலானது வலைத்தளங்கள் முழுவதும் பயனர்களைக் கண்காணிக்கப் பயன்படுத்தப்படலாம், எனவே அதைக் கட்டுப்படுத்துவது பயனர் தனியுரிமையை மேம்படுத்தும்.
எடுத்துக்காட்டு தலைப்பு:
Referrer-Policy: strict-origin-when-cross-origin
சில பொதுவான மதிப்புகள்:
no-referrer: Referer தலைப்பை ஒருபோதும் அனுப்பாது.no-referrer-when-downgrade: TLS (HTTPS) இல்லாத மூலங்களுக்கு Referer தலைப்பை அனுப்பாது.origin: Referer தலைப்பில் மூலத்தை (scheme, host, and port) மட்டும் அனுப்பும்.origin-when-cross-origin: குறுக்கு-மூலக் கோரிக்கைகளுக்கு மூலத்தையும், ஒரே-மூலக் கோரிக்கைகளுக்கு முழு URL-ஐயும் அனுப்பும்.same-origin: ஒரே-மூலக் கோரிக்கைகளுக்கு Referer தலைப்பை அனுப்பும், ஆனால் குறுக்கு-மூலக் கோரிக்கைகளுக்கு அனுப்பாது.strict-origin: நெறிமுறை பாதுகாப்பு நிலை மாறாமல் இருக்கும்போது (HTTPS-லிருந்து HTTPS-க்கு) மூலத்தை மட்டும் அனுப்பும், ஆனால் குறைவான பாதுகாப்பான இடத்திற்கு (HTTPS-லிருந்து HTTP-க்கு) தலைப்பு எதையும் அனுப்பாது.strict-origin-when-cross-origin: ஒரே-மூலக் கோரிக்கையைச் செய்யும்போது மூலத்தை அனுப்பும். குறுக்கு-மூலக் கோரிக்கைகளுக்கு, நெறிமுறை பாதுகாப்பு நிலை மாறாமல் இருக்கும்போது (HTTPS-லிருந்து HTTPS-க்கு) மட்டுமே மூலத்தை அனுப்பும், ஆனால் குறைவான பாதுகாப்பான இடத்திற்கு (HTTPS-லிருந்து HTTP-க்கு) தலைப்பு எதையும் அனுப்பாது.unsafe-url: மூலம் எதுவாக இருந்தாலும், Referer தலைப்பில் முழு URL-ஐயும் அனுப்பும். இது முக்கியமான தகவல்களை வெளிப்படுத்தக்கூடும் என்பதால் மிகுந்த எச்சரிக்கையுடன் பயன்படுத்தவும்.
அனுமதிகள்-கொள்கை (Permissions-Policy) (முன்னர் அம்சக்-கொள்கை - Feature-Policy)
Permissions-Policy தலைப்பு (முன்னர் Feature-Policy என அறியப்பட்டது) டெவலப்பர்களை உலாவி அம்சங்கள் மற்றும் API-களைத் தேர்ந்தெடுத்து இயக்கவும் முடக்கவும் அனுமதிக்கிறது. இது உங்கள் பயன்பாட்டின் தாக்குதல் பரப்பைக் குறைக்கவும் பயனர் தனியுரிமையை மேம்படுத்தவும் உதவும்.
எடுத்துக்காட்டு தலைப்பு:
Permissions-Policy: geolocation=()
இந்த எடுத்துக்காட்டு வலைத்தளத்திற்கான புவிஇருப்பிட (geolocation) API-ஐ முடக்குகிறது.
Permissions-Policy மூலம் கட்டுப்படுத்தக்கூடிய பிற அம்சங்கள்:
cameramicrophonegeolocationaccelerometergyroscopemagnetometerusbmidipaymentfullscreen
வெவ்வேறு தளங்களில் பாதுகாப்பு தலைப்புகளை அமைத்தல்
நீங்கள் பயன்படுத்தும் வலை சேவையகம் அல்லது தளத்தைப் பொறுத்து பாதுகாப்பு தலைப்புகளை அமைக்கும் முறை மாறுபடும். இங்கே சில பொதுவான எடுத்துக்காட்டுகள் உள்ளன:
அப்பாச்சி (Apache)
நீங்கள் அப்பாச்சியில் பாதுகாப்பு தலைப்புகளை .htaccess கோப்பில் அல்லது சேவையக உள்ளமைவு கோப்பில் (httpd.conf) சேர்ப்பதன் மூலம் அமைக்கலாம்.
எடுத்துக்காட்டு .htaccess உள்ளமைவு:
<IfModule mod_headers.c>
Header set Content-Security-Policy "default-src 'self'; script-src 'self' https://cdn.example.com; style-src 'self' 'unsafe-inline'; img-src 'self' data:; report-uri /csp-report"
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Header set X-Frame-Options "DENY"
Header set X-XSS-Protection "1; mode=block"
Header set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>
என்ஜின்க்ஸ் (Nginx)
என்ஜின்க்ஸ் உள்ளமைவு கோப்பில் (nginx.conf) உள்ள சர்வர் பிளாக்கில் பாதுகாப்பு தலைப்புகளைச் சேர்ப்பதன் மூலம் அவற்றை அமைக்கலாம்.
எடுத்துக்காட்டு என்ஜின்க்ஸ் உள்ளமைவு:
server {
listen 443 ssl;
server_name example.com;
add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://cdn.example.com; style-src 'self' 'unsafe-inline'; img-src 'self' data:; report-uri /csp-report";
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
add_header X-Frame-Options "DENY";
add_header X-XSS-Protection "1; mode=block";
add_header Referrer-Policy "strict-origin-when-cross-origin";
...
}
நோட்.ஜேஎஸ் (Node.js) (எக்ஸ்பிரஸ் - Express)
நீங்கள் நோட்.ஜேஎஸ்-இல் ஹெல்மெட் (Helmet) போன்ற மிடில்வேர் (middleware) பயன்படுத்தி பாதுகாப்பு தலைப்புகளை அமைக்கலாம்.
ஹெல்மெட் பயன்பாட்டு எடுத்துக்காட்டு:
const express = require('express');
const helmet = require('helmet');
const app = express();
app.use(helmet());
// தேவைப்பட்டால் CSP ஐத் தனிப்பயனாக்கவும்
app.use(helmet.contentSecurityPolicy({
directives: {
defaultSrc: ["'self'"],
scriptSrc: ["'self'", "https://cdn.example.com"],
styleSrc: ["'self'", "'unsafe-inline'"],
imgSrc: ["'self'", "data:"],
reportUri: '/csp-report'
},
}));
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(3000, () => {
console.log('Server listening on port 3000');
});
கிளவுட்ஃபிளேர் (Cloudflare)
கிளவுட்ஃபிளேர் அவர்களின் பக்க விதிகள் (Page Rules) அல்லது மாற்று விதிகள் (Transform Rules) மூலம் பாதுகாப்பு தலைப்புகளை அமைக்க உங்களை அனுமதிக்கிறது.
உங்கள் பாதுகாப்பு தலைப்புகளைச் சோதித்தல்
பாதுகாப்பு தலைப்புகளைச் செயல்படுத்திய பிறகு, அவை சரியாக வேலை செய்கின்றனவா என்பதை உறுதிப்படுத்த அவற்றைச் சோதிப்பது அவசியம். உங்கள் வலைத்தளத்தின் பாதுகாப்பு தலைப்புகளைப் பகுப்பாய்வு செய்ய பல ஆன்லைன் கருவிகள் உங்களுக்கு உதவும்:
- SecurityHeaders.com: பாதுகாப்பு தலைப்புகளைப் பகுப்பாய்வு செய்வதற்கான ஒரு எளிய மற்றும் பயனுள்ள கருவி.
- Mozilla Observatory: பாதுகாப்பு தலைப்புகள் உட்பட வலைத்தளத்தின் பாதுகாப்பைச் சோதிப்பதற்கான ஒரு விரிவான கருவி.
- WebPageTest.org: நீர்வீழ்ச்சி விளக்கப்படத்தில் (waterfall chart) HTTP தலைப்புகளைப் பார்க்க உங்களை அனுமதிக்கிறது.
முடிவுரை
ஃபிரன்ட்எண்ட் பாதுகாப்பு தலைப்புகள், குறிப்பாக உள்ளடக்க பாதுகாப்பு கொள்கை (CSP), வலைப் பயன்பாடுகளை பல்வேறு தாக்குதல்களிலிருந்து பாதுகாப்பதற்கும் பயனர் பாதுகாப்பை மேம்படுத்துவதற்கும் அவசியமானவை. இந்த தலைப்புகளை கவனமாகச் செயல்படுத்திப் பராமரிப்பதன் மூலம், XSS, கிளிக்ஜாக்கிங் மற்றும் பிற பாதுகாப்பு பாதிப்புகளின் அபாயத்தை நீங்கள் கணிசமாகக் குறைக்கலாம். அறிக்கை-மட்டும் கொள்கையுடன் தொடங்கவும், மீறல் அறிக்கைகளைப் பகுப்பாய்வு செய்யவும், கொள்கையைச் செம்மைப்படுத்தவும், பின்னர் செயல்படுத்துதல் பயன்முறைக்கு மாறவும் நினைவில் கொள்ளுங்கள். உங்கள் வலைத்தளம் உருவாகும்போது மற்றும் புதிய அச்சுறுத்தல்கள் வெளிப்படும்போது உங்கள் பாதுகாப்பு தலைப்புகளைத் தவறாமல் கண்காணித்து புதுப்பிக்கவும்.
ஃபிரன்ட்எண்ட் பாதுகாப்பிற்கு ஒரு செயலூக்கமான அணுகுமுறையை மேற்கொள்வதன் மூலம், உங்கள் பயனர்களையும் உங்கள் வணிகத்தையும் பாதுகாக்கும் மிகவும் பாதுகாப்பான மற்றும் நம்பகமான வலைப் பயன்பாடுகளை நீங்கள் உருவாக்கலாம்.