இந்த விரிவான வழிகாட்டியுடன் ஜாவாஸ்கிரிப்ட் பாதுகாப்பில் தேர்ச்சி பெறுங்கள். CSP, CORS, பாதுகாப்பான குறியீடாக்கம், அங்கீகாரம் மற்றும் பலவற்றை உள்ளடக்கிய ஒரு வலுவான பாதுகாப்பு உள்கட்டமைப்பை எவ்வாறு செயல்படுத்துவது என்பதை அறிக.
டிஜிட்டல் கோட்டையை உருவாக்குதல்: ஜாவாஸ்கிரிப்ட் பாதுகாப்பு உள்கட்டமைப்பை செயல்படுத்துவதற்கான முழுமையான வழிகாட்டி
நவீன டிஜிட்டல் சூழலில், ஜாவாஸ்கிரிப்ட் இணையத்தின் மறுக்கமுடியாத பொதுவான மொழி. இது கிளையன்ட் பக்கத்தில் டைனமிக் பயனர் இடைமுகங்கள் முதல் பேக்-எண்டில் வலுவான, உயர்-செயல்திறன் சேவையகங்கள் வரை அனைத்தையும் இயக்குகிறது. இருப்பினும், இந்த எங்கும் நிறைந்திருப்பது ஜாவாஸ்கிரிப்ட் பயன்பாடுகளை தீங்கு விளைவிக்கும் நபர்களுக்கு ஒரு முக்கிய இலக்காக ஆக்குகிறது. ஒரு ஒற்றை பாதிப்பு கூட தரவு மீறல்கள், நிதி இழப்பு மற்றும் நற்பெயருக்கு சேதம் விளைவிக்கும் பேரழிவு விளைவுகளுக்கு வழிவகுக்கும். வெறுமனே செயல்பாட்டு குறியீட்டை எழுதுவது இனி போதுமானதாக இல்லை; ஒரு வலுவான, மீள்தன்மை பாதுகாப்பு உள்கட்டமைப்பை உருவாக்குவது எந்தவொரு தீவிர திட்டத்திற்கும் பேச்சுவார்த்தைக்குட்படாத தேவையாகும்.
இந்த வழிகாட்டி நவீன ஜாவாஸ்கிரிப்ட் பாதுகாப்பு உள்கட்டமைப்பை உருவாக்குவதற்கான ஒரு விரிவான, செயலாக்கத்தை மையமாகக் கொண்ட நடைமுறையை வழங்குகிறது. நாங்கள் தத்துவார்த்த கருத்துக்களைத் தாண்டி, உங்கள் பயன்பாடுகளை அடித்தளத்திலிருந்து பலப்படுத்துவதற்குத் தேவையான நடைமுறை படிகள், கருவிகள் மற்றும் சிறந்த நடைமுறைகளுக்குச் செல்வோம். நீங்கள் ஒரு முன்-இறுதி டெவலப்பராக இருந்தாலும், பேக்-எண்ட் பொறியாளராக இருந்தாலும் அல்லது முழு-குவியல் நிபுணராக இருந்தாலும், இந்த வழிகாட்டி உங்கள் குறியீட்டைச் சுற்றி ஒரு டிஜிட்டல் கோட்டையை உருவாக்க அறிவுடன் உங்களைச் சித்தப்படுத்தும்.
நவீன ஜாவாஸ்கிரிப்ட் அச்சுறுத்தல் நிலப்பரப்பை புரிந்துகொள்வது
எங்கள் பாதுகாப்புகளை உருவாக்குவதற்கு முன்பு, நாங்கள் எதற்கு எதிராக பாதுகாக்கிறோம் என்பதை முதலில் புரிந்து கொள்ள வேண்டும். அச்சுறுத்தல் நிலப்பரப்பு தொடர்ந்து வளர்ந்து வருகிறது, ஆனால் பல முக்கிய பாதிப்புகள் ஜாவாஸ்கிரிப்ட் பயன்பாடுகளில் பரவலாக உள்ளன. ஒரு வெற்றிகரமான பாதுகாப்பு உள்கட்டமைப்பு இந்த அச்சுறுத்தல்களை முறையாக நிவர்த்தி செய்ய வேண்டும்.
- குறுக்கு-தள ஸ்கிரிப்டிங் (XSS): இது ஒருவேளை மிகவும் பிரபலமான வலை பாதிப்பாகும். ஒரு தாக்குபவர் நம்பகமான வலைத்தளத்தில் தீங்கிழைக்கும் ஸ்கிரிப்ட்களைச் செருகும்போது XSS ஏற்படுகிறது. இந்த ஸ்கிரிப்டுகள் பின்னர் பாதிக்கப்பட்டவரின் உலாவியில் இயங்குகின்றன, தாக்குபவர் அமர்வு டோக்கன்களைத் திருடவும், முக்கியமான தரவைச் சேகரிக்கவும் அல்லது பயனரின் சார்பாக செயல்களைச் செய்யவும் அனுமதிக்கிறது.
- குறுக்கு-தள கோரிக்கை மோசடி (CSRF): CSRF தாக்குதலில், ஒரு தாக்குபவர் உள்நுழைந்த பயனரை அவர்கள் அங்கீகரிக்கப்பட்ட வலை பயன்பாட்டிற்கு ஒரு தீங்கிழைக்கும் கோரிக்கையை சமர்ப்பிக்கச் செய்கிறார். இது அங்கீகரிக்கப்படாத மாநில மாற்றும் செயல்களுக்கு வழிவகுக்கும், அதாவது மின்னஞ்சல் முகவரியை மாற்றுவது, நிதி மாற்றுவது அல்லது கணக்கை நீக்குவது.
- விநியோக சங்கிலி தாக்குதல்கள்: நவீன ஜாவாஸ்கிரிப்ட் மேம்பாடு npm போன்ற பதிவேடுகளிலிருந்து திறந்த மூல தொகுப்புகளை பெரிதும் நம்பியுள்ளது. ஒரு தீங்கிழைக்கும் நடிகர் இந்த தொகுப்புகளில் ஒன்றை சமரசம் செய்யும் போது ஒரு விநியோக சங்கிலி தாக்குதல் ஏற்படுகிறது, மேலும் அதை பயன்படுத்தும் ஒவ்வொரு பயன்பாட்டிலும் செயல்படுத்தப்படும் தீங்கிழைக்கும் குறியீட்டை செலுத்துகிறது.
- பாதுகாப்பற்ற அங்கீகாரம் & அங்கீகரித்தல்: பயனர்கள் எவ்வாறு அடையாளம் காணப்படுகிறார்கள் (அங்கீகாரம்) மற்றும் அவர்கள் என்ன செய்ய அனுமதிக்கப்படுகிறார்கள் (அங்கீகரித்தல்) ஆகியவற்றில் உள்ள பலவீனங்கள், தாக்குபவர்களுக்கு முக்கியமான தரவு மற்றும் செயல்பாட்டிற்கு அங்கீகரிக்கப்படாத அணுகலை வழங்க முடியும். இதில் பலவீனமான கடவுச்சொல் கொள்கைகள், முறையற்ற அமர்வு மேலாண்மை மற்றும் உடைந்த அணுகல் கட்டுப்பாடு ஆகியவை அடங்கும்.
- உணர்திறன் தரவு வெளிப்பாடு: API விசைகள், கடவுச்சொற்கள் அல்லது தனிப்பட்ட பயனர் தரவு போன்ற முக்கியமான தகவல்களை கிளையன்ட் பக்க குறியீட்டில், பாதுகாப்பற்ற API இறுதிப்புள்ளிகள் மூலம் அல்லது பதிவுகளில் வெளிப்படுத்துவது ஒரு முக்கியமான மற்றும் பொதுவான பாதிப்பாகும்.
நவீன ஜாவாஸ்கிரிப்ட் பாதுகாப்பு உள்கட்டமைப்பின் தூண்கள்
ஒரு விரிவான பாதுகாப்பு மூலோபாயம் என்பது ஒரு கருவி அல்லது நுட்பம் மட்டுமல்ல, பல அடுக்கு பாதுகாப்பு-ஆழ அணுகுமுறை. எங்கள் உள்கட்டமைப்பை ஆறு முக்கிய தூண்களாக ஒழுங்கமைக்கலாம், ஒவ்வொன்றும் பயன்பாட்டு பாதுகாப்பின் வெவ்வேறு அம்சத்தை உரையாற்றுகின்றன.
- உலாவி-நிலை பாதுகாப்புகள்: ஒரு சக்திவாய்ந்த முதல் பாதுகாப்பு வரியை உருவாக்க நவீன உலாவி பாதுகாப்பு அம்சங்களை மேம்படுத்துதல்.
- பயன்பாட்டு-நிலை பாதுகாப்பான குறியீடாக்கம்: பொதுவான தாக்குதல் திசையன்களுக்கு உள்ளார்ந்த மீள்தன்மை கொண்ட குறியீட்டை எழுதுதல்.
- வலுவான அங்கீகாரம் & அங்கீகரித்தல்: பயனர் அடையாளம் மற்றும் அணுகல் கட்டுப்பாட்டைப் பாதுகாப்பாக நிர்வகித்தல்.
- பாதுகாப்பான தரவு கையாளுதல்: போக்குவரத்தில் மற்றும் ஓய்வில் தரவைப் பாதுகாத்தல்.
- சார்பு & உருவாக்க குழாய் பாதுகாப்பு: உங்கள் மென்பொருள் விநியோக சங்கிலி மற்றும் மேம்பாட்டு வாழ்க்கை சுழற்சியைப் பாதுகாத்தல்.
- பதிவு செய்தல், கண்காணித்தல் மற்றும் சம்பவ பதில்: பாதுகாப்பு நிகழ்வுகளைக் கண்டறிதல், பதிலளித்தல் மற்றும் கற்றல்.
இந்த ஒவ்வொரு தூண்களையும் எவ்வாறு விரிவாக செயல்படுத்துவது என்பதை ஆராய்வோம்.
தூண் 1: உலாவி-நிலை பாதுகாப்புகளை செயல்படுத்துதல்
நவீன உலாவிகள் HTTP தலைப்புகள் மூலம் நீங்கள் கட்டுப்படுத்தக்கூடிய சக்திவாய்ந்த பாதுகாப்பு வழிமுறைகளைக் கொண்டுள்ளன. இவற்றைச் சரியாக உள்ளமைப்பது, பரவலான தாக்குதல்களைத் தணிப்பதற்கு நீங்கள் எடுக்கக்கூடிய மிகச் சிறந்த நடவடிக்கைகளில் ஒன்றாகும், குறிப்பாக XSS.
உள்ளடக்க பாதுகாப்பு கொள்கை (CSP): XSS க்கு எதிரான உங்கள் இறுதி பாதுகாப்பு
உள்ளடக்க பாதுகாப்பு கொள்கை (CSP) என்பது ஒரு HTTP பதில் தலைப்பு ஆகும், இது எந்த டைனமிக் வளங்கள் (ஸ்கிரிப்டுகள், ஸ்டைல்ஷீட்கள், படங்கள் போன்றவை) உலாவியால் ஏற்ற அனுமதிக்கப்படுகின்றன என்பதை நீங்கள் குறிப்பிட அனுமதிக்கிறது. இது ஒரு வெள்ளைப்பட்டியலாக செயல்படுகிறது, தாக்குபவரால் செலுத்தப்படும் தீங்கிழைக்கும் ஸ்கிரிப்ட்களை உலாவியில் செயல்படுத்துவதைத் திறம்பட தடுக்கிறது.
செயல்படுத்துதல்:
ஒரு கண்டிப்பான CSP உங்கள் குறிக்கோள். ஒரு நல்ல தொடக்க புள்ளி இதுபோல் தெரிகிறது:
Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted-cdn.com; style-src 'self' 'unsafe-inline'; img-src 'self' data:; connect-src 'self' https://api.yourapp.com; frame-ancestors 'none'; report-uri /csp-violation-report-endpoint;
இந்த வழிமுறைகளை உடைப்போம்:
default-src 'self'
: இயல்பாக, ஒரே மூலத்திலிருந்து (உங்கள் சொந்த டொமைன்) ஏற்ற வளங்களை மட்டுமே அனுமதிக்கவும்.script-src 'self' https://trusted-cdn.com
: உங்கள் சொந்த டொமைன் மற்றும் நம்பகமான உள்ளடக்க விநியோக நெட்வொர்க்கிலிருந்து மட்டுமே ஸ்கிரிப்ட்களை அனுமதிக்கவும்.style-src 'self' 'unsafe-inline'
: உங்கள் டொமைனிலிருந்து ஸ்டைல்ஷீட்களை அனுமதிக்கவும். குறிப்பு:'unsafe-inline'
பெரும்பாலும் பாரம்பரிய CSS க்கு தேவைப்படுகிறது, ஆனால் வரிசை பாணிகளை மறுசீரமைப்பதன் மூலம் முடிந்தால் தவிர்க்கப்பட வேண்டும்.img-src 'self' data:
: உங்கள் டொமைனிலிருந்தும் தரவு URI களில் இருந்தும் படங்களை அனுமதிக்கவும்.connect-src 'self' https://api.yourapp.com
: உங்கள் சொந்த டொமைன் மற்றும் உங்கள் குறிப்பிட்ட API இறுதிப்புள்ளிக்கான AJAX/Fetch கோரிக்கைகளை கட்டுப்படுத்துகிறது.frame-ancestors 'none'
: உங்கள் தளத்தை<iframe>
இல் உட்பொதிவதைத் தடுக்கிறது, கிளிக்ஜாக்கிங் தாக்குதல்களைத் தணிக்கிறது.report-uri /csp-violation-report-endpoint
: ஒரு கொள்கை மீறப்படும்போது ஒரு JSON அறிக்கையை எங்கு அனுப்ப வேண்டும் என்று உலாவியிடம் கூறுகிறது. தாக்குதல்களைக் கண்காணிப்பதற்கும் உங்கள் கொள்கையைச் செம்மைப்படுத்துவதற்கும் இது முக்கியமானது.
புரோ-டிப்: அனைத்து செலவிலும் script-src
க்கு 'unsafe-inline'
மற்றும் 'unsafe-eval'
ஆகியவற்றைத் தவிர்க்கவும். வரிசை ஸ்கிரிப்டுகளைப் பாதுகாப்பாகக் கையாள, nonce-based அல்லது hash-based அணுகுமுறையைப் பயன்படுத்தவும். ஒரு nonce என்பது ஒவ்வொரு கோரிக்கைக்கும் ஒரு தனித்துவமான, தோராயமாக உருவாக்கப்பட்ட டோக்கன் ஆகும், அதை நீங்கள் CSP தலைப்பு மற்றும் ஸ்கிரிப்ட் டேக்கில் சேர்க்கிறீர்கள்.
குறுக்கு-மூல வள பகிர்வு (CORS): அணுகல் கட்டுப்பாட்டை நிர்வகித்தல்
இயல்பாக, உலாவிகள் அதே-மூல கொள்கையை (SOP) செயல்படுத்துகின்றன, இது ஒரு வலைப்பக்கத்தை பக்கத்தை வழங்கியதை விட வேறு டொமைனுக்கு கோரிக்கைகளை வைப்பதைத் தடுக்கிறது. CORS என்பது HTTP தலைப்புகளைப் பயன்படுத்தும் ஒரு பொறிமுறையாகும், இது ஒரு சேவையகத்தை தனது சொந்தத்தைத் தவிர வேறு எந்த மூலங்களையும் குறிக்க அனுமதிக்கிறது, அதில் இருந்து ஒரு உலாவி வளங்களை ஏற்ற அனுமதிக்க வேண்டும்.
செயல்படுத்துதல் (Node.js/Express எடுத்துக்காட்டு):
உணர்திறன் தரவைக் கையாளும் உற்பத்தி பயன்பாடுகளில் Access-Control-Allow-Origin
க்கு வைல்ட்கார்டை (*
) பயன்படுத்த வேண்டாம். அதற்கு பதிலாக, அனுமதிக்கப்பட்ட தோற்றங்களின் கண்டிப்பான வெள்ளைப்பட்டியலைப் பராமரிக்கவும்.
const cors = require('cors');
const allowedOrigins = ['https://yourapp.com', 'https://staging.yourapp.com'];
const corsOptions = {
origin: function (origin, callback) {
if (allowedOrigins.indexOf(origin) !== -1 || !origin) {
callback(null, true);
} else {
callback(new Error('Not allowed by CORS'));
}
},
methods: ['GET', 'POST', 'PUT', 'DELETE'],
credentials: true // Important for handling cookies
};
app.use(cors(corsOptions));
கடினப்படுத்துவதற்கான கூடுதல் பாதுகாப்பு தலைப்புகள்
- HTTP கண்டிப்பான போக்குவரத்து பாதுகாப்பு (HSTS):
Strict-Transport-Security: max-age=31536000; includeSubDomains
. இது உங்கள் சேவையகத்துடன் HTTPS மூலம் மட்டுமே தொடர்பு கொள்ள உலாவிகளுக்குக் கூறுகிறது, நெறிமுறை தரமிறக்கத் தாக்குதல்களைத் தடுக்கிறது. - X-Content-Type-Options:
X-Content-Type-Options: nosniff
. இது அறிவிக்கப்பட்ட உள்ளடக்க வகையிலிருந்து ஒரு பதிலை MIME-sniff செய்வதிலிருந்து உலாவிகளைத் தடுக்கிறது, இது சில வகையான XSS தாக்குதல்களைத் தடுக்க உதவும். - Referrer-Policy:
Referrer-Policy: strict-origin-when-cross-origin
. இது கோரிக்கைகளுடன் எவ்வளவு பரிந்துரை தகவல் அனுப்பப்படுகிறது என்பதைக் கட்டுப்படுத்துகிறது, URL களில் சாத்தியமான தரவு கசிவைத் தடுக்கிறது.
தூண் 2: பயன்பாட்டு-நிலை பாதுகாப்பான குறியீட்டு நடைமுறைகள்
வலுவான உலாவி-நிலை பாதுகாப்புகள் இருந்தாலும், பாதுகாப்பற்ற குறியீட்டு முறைகளால் பாதிப்புகள் அறிமுகப்படுத்தப்படலாம். பாதுகாப்பான குறியீடாக்கம் ஒவ்வொரு டெவலப்பருக்கும் ஒரு அடிப்படை நடைமுறையாக இருக்க வேண்டும்.
XSS ஐத் தடுக்கும்: உள்ளீடு சுத்திகரிப்பு மற்றும் வெளியீட்டு குறியாக்கம்
XSS ஐத் தடுப்பதற்கான பொன் விதி: பயனர் உள்ளீட்டை ஒருபோதும் நம்ப வேண்டாம். வெளிப்புற மூலத்திலிருந்து வரும் அனைத்து தரவையும் கவனமாகக் கையாள வேண்டும்.
- உள்ளீடு சுத்திகரிப்பு: இது தீங்கிழைக்கும் எழுத்துகள் அல்லது குறியீட்டை அகற்ற பயனர் உள்ளீட்டை சுத்தம் செய்தல் அல்லது வடிகட்டுவதை உள்ளடக்குகிறது. ரிச் டெக்ஸ்டுக்கு, இந்த நோக்கத்திற்காக வடிவமைக்கப்பட்ட ஒரு வலுவான நூலகத்தைப் பயன்படுத்தவும்.
- வெளியீட்டு குறியாக்கம்: இது மிக முக்கியமான படி. உங்கள் HTML இல் பயனர் வழங்கிய தரவை ரெண்டரிங் செய்யும்போது, அது தோன்றும் குறிப்பிட்ட சூழலுக்கு அதை குறியாக்க வேண்டும். React, Angular மற்றும் Vue போன்ற நவீன முன்-இறுதி கட்டமைப்புகள் பெரும்பாலான உள்ளடக்கத்திற்கு இதை தானாகவே செய்கின்றன, ஆனால்
dangerouslySetInnerHTML
போன்ற அம்சங்களைப் பயன்படுத்தும் போது நீங்கள் கவனமாக இருக்க வேண்டும்.
செயல்படுத்துதல் (சுத்திகரிப்புக்கான DOMPurify):
பயனர்களிடமிருந்து சில HTML ஐ நீங்கள் அனுமதிக்க வேண்டும் என்றால் (எடுத்துக்காட்டாக, ஒரு வலைப்பதிவு கருத்து பிரிவில்), DOMPurify போன்ற ஒரு நூலகத்தைப் பயன்படுத்தவும்.
import DOMPurify from 'dompurify';
let dirtyUserInput = '<img src="x" onerror="alert('XSS')">';
let cleanHTML = DOMPurify.sanitize(dirtyUserInput);
// cleanHTML will be: '<img src="x">'
// The malicious onerror attribute is removed.
document.getElementById('content').innerHTML = cleanHTML;
ஒத்திசைவு டோக்கன் முறை மூலம் CSRF ஐத் தணித்தல்
CSRF க்கு எதிரான மிகவும் வலுவான பாதுகாப்பு என்பது ஒத்திசைவு டோக்கன் முறை. சேவையகம் ஒவ்வொரு பயனர் அமர்வுக்கும் ஒரு தனித்துவமான, தோராயமான டோக்கனை உருவாக்குகிறது மற்றும் அந்த டோக்கன் எந்தவொரு நிலை மாற்றும் கோரிக்கையிலும் சேர்க்கப்பட வேண்டும்.
செயல்படுத்துதல் கருத்து:
- ஒரு பயனர் உள்நுழையும்போது, சேவையகம் CSRF டோக்கனை உருவாக்கி அதை பயனரின் அமர்வில் சேமிக்கிறது.
- சேவையகம் இந்த டோக்கனை படிவங்களில் ஒரு மறைக்கப்பட்ட உள்ளீட்டு புலத்தில் உட்பொதிக்கிறது அல்லது API இறுதிப்புள்ளி மூலம் கிளையன்ட் பக்க பயன்பாட்டிற்கு வழங்குகிறது.
- ஒவ்வொரு நிலை மாற்றும் கோரிக்கைக்கும் (POST, PUT, DELETE), கிளையன்ட் இந்த டோக்கனை மீண்டும் அனுப்ப வேண்டும், பொதுவாக ஒரு கோரிக்கை தலைப்பாக (எடுத்துக்காட்டாக,
X-CSRF-Token
) அல்லது கோரிக்கை உடலில். - பெறப்பட்ட டோக்கன் அமர்வில் சேமிக்கப்பட்ட டோக்கனுடன் பொருந்துகிறதா என்பதை சேவையகம் சரிபார்க்கிறது. அது பொருந்தவில்லை அல்லது காணவில்லை என்றால், கோரிக்கை நிராகரிக்கப்படுகிறது.
Express க்கான csurf
போன்ற நூலகங்கள் இந்த செயல்முறையை தானியக்கமாக்க உதவும்.
தூண் 3: வலுவான அங்கீகாரம் மற்றும் அங்கீகரித்தல்
உங்கள் பயன்பாட்டை யார் அணுகலாம் மற்றும் அவர்கள் என்ன செய்ய முடியும் என்பதைப் பாதுகாப்பாக நிர்வகிப்பது பாதுகாப்பிற்கு அடிப்படையாகும்.
JSON வலை டோக்கன்களுடன் (JWT கள்) அங்கீகாரம்
JWT கள் அணுகல் டோக்கன்களை உருவாக்குவதற்கான பிரபலமான தரமாகும். ஒரு JWT மூன்று பகுதிகளைக் கொண்டுள்ளது: ஒரு தலைப்பு, ஒரு பேலோட் மற்றும் ஒரு கையொப்பம். கையொப்பம் முக்கியமானது; டோக்கன் நம்பகமான சேவையகத்தால் வழங்கப்பட்டது மற்றும் சேதப்படுத்தப்படவில்லை என்பதை இது சரிபார்க்கிறது.
JWT செயல்படுத்துவதற்கான சிறந்த நடைமுறைகள்:
- வலுவான கையொப்பம் அல்காரிதத்தைப் பயன்படுத்தவும்: HS256 போன்ற சமச்சீர் ஒன்றை விட RS256 போன்ற சமச்சீரற்ற அல்காரிதங்களைப் பயன்படுத்தவும். இது டோக்கன்களை கையொப்பமிடத் தேவையான ரகசிய விசையையும் கிளையன்ட் எதிர்கொள்ளும் சேவையகம் வைத்திருப்பதைத் தடுக்கிறது.
- பேலோடுகளை மெல்லியதாக வைத்திருங்கள்: முக்கியமான தகவல்களை JWT பேலோடில் சேமிக்க வேண்டாம். இது என்க்ரிப்ட் செய்யப்படவில்லை, base64 குறியாக்கம் செய்யப்பட்டுள்ளது. பயனர் ஐடி, ரோல்கள் மற்றும் டோக்கன் காலாவதி போன்ற முக்கியமான தரவை சேமிக்கவும்.
- குறுகிய காலாவதி நேரங்களை அமைக்கவும்: அணுகல் டோக்கன்கள் குறுகிய ஆயுட்காலத்தைக் கொண்டிருக்க வேண்டும் (எடுத்துக்காட்டாக, 15 நிமிடங்கள்). பயனர் மீண்டும் உள்நுழையத் தேவையில்லாமல் புதிய அணுகல் டோக்கன்களைப் பெற நீண்ட காலம் வாழும் புதுப்பிப்பு டோக்கனைப் பயன்படுத்தவும்.
- பாதுகாப்பான டோக்கன் சேமிப்பு: இது சர்ச்சைக்குரிய ஒரு முக்கியமான புள்ளி.
localStorage
இல் JWT களைச் சேமிப்பது XSS க்கு அவற்றை பாதிக்க வைக்கிறது.HttpOnly
,Secure
,SameSite=Strict
குக்கீகளில் அவற்றைச் சேமிப்பதே மிகவும் பாதுகாப்பான முறை. இது ஜாவாஸ்கிரிப்ட் டோக்கனை அணுகுவதைத் தடுக்கிறது, XSS மூலம் திருட்டைத் தணிக்கிறது. புதுப்பிப்பு டோக்கன் இந்த முறையில் சேமிக்கப்பட வேண்டும், அதே நேரத்தில் குறுகிய கால அணுகல் டோக்கனை நினைவகத்தில் வைத்திருக்க முடியும்.
அங்கீகரித்தல்: குறைந்த சலுகையின் கொள்கை
அங்கீகரிக்கப்பட்ட பயனர் என்ன செய்ய அனுமதிக்கப்படுகிறார் என்பதை அங்கீகரித்தல் தீர்மானிக்கிறது. குறைந்த சலுகையின் கொள்கையை எப்போதும் பின்பற்றவும்: ஒரு பயனர் தங்கள் பணிகளைச் செய்யத் தேவையான குறைந்தபட்ச அணுகல் மட்டத்தை மட்டுமே கொண்டிருக்க வேண்டும்.
செயல்படுத்துதல் (Node.js/Express இல் இடைநிலை):
பாதுகாக்கப்பட்ட பாதைக்கு அணுகலை அனுமதிக்கும் முன் பயனர் ரோல்கள் அல்லது அனுமதிகளைச் சரிபார்க்க இடைநிலையைச் செயல்படுத்தவும்.
function authorizeAdmin(req, res, next) {
// Assuming user information is attached to the request object by an auth middleware
if (req.user && req.user.role === 'admin') {
return next(); // User is an admin, proceed
}
return res.status(403).json({ message: 'Forbidden: Access is denied.' });
}
app.get('/api/admin/dashboard', authenticate, authorizeAdmin, (req, res) => {
// This code will only run if the user is authenticated and is an admin
res.json({ data: 'Welcome to the admin dashboard!' });
});
தூண் 4: சார்பு மற்றும் உருவாக்க குழாயைப் பாதுகாத்தல்
உங்கள் பயன்பாடு அதன் பலவீனமான சார்புநிலையைப் போல பாதுகாப்பானது. உங்கள் மென்பொருள் விநியோக சங்கிலியைப் பாதுகாப்பது இனி விருப்பமானதல்ல.
சார்பு மேலாண்மை மற்றும் தணிக்கை
npm சூழல் அமைப்பு பரந்தமானது, ஆனால் அது பாதிப்புகளின் ஆதாரமாக இருக்கலாம். உங்கள் சார்புகளைத் தீவிரமாக நிர்வகிப்பது முக்கியம்.
செயல்படுத்துதல் படிகள்:
- வழக்கமாக தணிக்கை செய்யுங்கள்: உங்கள் சார்புகளில் அறியப்பட்ட பாதிப்புகளுக்கு ஸ்கேன் செய்ய
npm audit
அல்லது `yarn audit` போன்ற உள்ளமைக்கப்பட்ட கருவிகளைப் பயன்படுத்தவும். அதிக தீவிர பாதிப்புகள் காணப்பட்டால், இந்த CI/CD குழாயில் ஒருங்கிணைக்கவும், இதனால் கட்டமைப்புகள் தோல்வியடையும். - பூட்டு கோப்புகளைப் பயன்படுத்தவும்: உங்கள்
package-lock.json
அல்லதுyarn.lock
கோப்பை எப்போதும் உறுதிப்படுத்தவும். ஒவ்வொரு டெவலப்பரும் மற்றும் உருவாக்க சூழலும் ஒவ்வொரு சார்புநிலையின் அதே பதிப்பைப் பயன்படுத்துவதை இது உறுதி செய்கிறது, எதிர்பாராத மாற்றங்களைத் தடுக்கிறது. - கண்காணிப்பை தானியக்கமாக்குங்கள்: GitHub இன் Dependabot அல்லது Snyk போன்ற மூன்றாம் தரப்பு கருவிகள் போன்ற சேவைகளைப் பயன்படுத்தவும். இந்த சேவைகள் உங்கள் சார்புகளைத் தொடர்ந்து கண்காணிக்கின்றன மற்றும் அறியப்பட்ட பாதிப்புகளுடன் தொகுப்புகளைப் புதுப்பிக்க தானாக இழுக்கும் கோரிக்கைகளை உருவாக்குகின்றன.
நிலையான பயன்பாட்டு பாதுகாப்பு சோதனை (SAST)
SAST கருவிகள் உங்கள் மூலக் குறியீட்டை செயல்படுத்தாமல், அபாயகரமான செயல்பாடுகளின் பயன்பாடு, ஹார்ட்கோட் செய்யப்பட்ட ரகசியங்கள் அல்லது பாதுகாப்பற்ற வடிவங்கள் போன்ற சாத்தியமான பாதுகாப்பு குறைபாடுகளைக் கண்டறிய பகுப்பாய்வு செய்கின்றன.
செயல்படுத்துதல்:
- பாதுகாப்பு செருகு நிரல்களுடன் கூடிய லின்டர்கள்:
eslint-plugin-security
போன்ற பாதுகாப்பு சார்ந்த செருகு நிரல்களுடன் ESLint ஐப் பயன்படுத்துவதே ஒரு சிறந்த தொடக்க புள்ளியாகும். இது உங்கள் குறியீட்டு எடிட்டரில் நிகழ்நேர கருத்துக்களை வழங்குகிறது. - CI/CD ஒருங்கிணைப்பு: SonarQube அல்லது CodeQL போன்ற சக்திவாய்ந்த SAST கருவியை உங்கள் CI/CD குழாயில் ஒருங்கிணைக்கவும். ஒவ்வொரு குறியீடு மாற்றத்திலும் இது ஆழமான பகுப்பாய்வைச் செய்யலாம் மற்றும் புதிய பாதுகாப்பு அபாயங்களை அறிமுகப்படுத்தும் ஒன்றிணைப்புகளைத் தடுக்கலாம்.
சுற்றுச்சூழல் மாறிகளைப் பாதுகாத்தல்
ரகசியங்களை ஒருபோதும், எவர் ஹார்ட்கோட் செய்யாதீர்கள் (API விசைகள், தரவுத்தள சான்றுகள், குறியாக்க விசைகள்) உங்கள் மூலக் குறியீட்டில் நேரடியாக. இது ஒரு பொதுவான தவறு, குறியீடு தற்செயலாக பொதுவில் வெளியிடப்படும்போது கடுமையான மீறல்களுக்கு வழிவகுக்கிறது.
சிறந்த நடைமுறைகள்:
- உள்ளூர் மேம்பாட்டிற்கான
.env
கோப்புகளைப் பயன்படுத்தவும், மேலும்.gitignore
கோப்பில்.env
பட்டியலிடப்பட்டுள்ளதா என்பதை உறுதிப்படுத்தவும். - உற்பத்தியில், உங்கள் கிளவுட் வழங்குநர் (எடுத்துக்காட்டாக, AWS Secrets Manager, Azure Key Vault, Google Secret Manager) அல்லது HashiCorp Vault போன்ற பிரத்யேக கருவி வழங்கும் ரகசிய மேலாண்மை சேவையைப் பயன்படுத்தவும். இந்த சேவைகள் உங்கள் எல்லா ரகசியங்களுக்கும் பாதுகாப்பான சேமிப்பு, அணுகல் கட்டுப்பாடு மற்றும் தணிக்கை ஆகியவற்றை வழங்குகின்றன.
தூண் 5: பாதுகாப்பான தரவு கையாளுதல்
இந்த தூண் உங்கள் கணினி வழியாகச் செல்லும் தரவைப் பாதுகாப்பதிலும், அது சேமிக்கப்படும்போதும் கவனம் செலுத்துகிறது.
போக்குவரத்தில் அனைத்தையும் குறியாக்கம் செய்யுங்கள்
கிளையன்ட் மற்றும் உங்கள் சேவையகங்களுக்கு இடையிலான அனைத்து தகவல்தொடர்பு மற்றும் உங்கள் உள் மைக்ரோ சேவைகளுக்கு இடையில் போக்குவரத்து அடுக்கு பாதுகாப்பு (TLS) பயன்படுத்தி குறியாக்கம் செய்யப்பட வேண்டும், பொதுவாக HTTPS என அழைக்கப்படுகிறது. இது பேச்சுவார்த்தைக்குட்பட்டது. இந்த கொள்கையை செயல்படுத்த முன்பு விவாதிக்கப்பட்ட HSTS தலைப்பைப் பயன்படுத்தவும்.
API பாதுகாப்பு சிறந்த நடைமுறைகள்
- உள்ளீடு சரிபார்ப்பு: உங்கள் API சேவையகத்தில் வரும் அனைத்து தரவையும் கடுமையாக சரிபார்க்கவும். சரியான தரவு வகைகள், நீளம், வடிவங்கள் மற்றும் வரம்புகளை சரிபார்க்கவும். இது NoSQL ஊசி மற்றும் பிற தரவு சிதைவு சிக்கல்கள் உட்பட பரவலான தாக்குதல்களைத் தடுக்கிறது.
- விகித வரம்பு: உங்கள் API ஐ சேவை மறுப்பு (DoS) தாக்குதல்கள் மற்றும் உள்நுழைவு இறுதிப்புள்ளிகளில் மிருகத்தனமான முயற்சிகளிலிருந்து பாதுகாக்க விகித வரம்பை செயல்படுத்தவும்.
- சரியான HTTP முறைகள்: HTTP முறைகளை அவற்றின் நோக்கத்திற்கு ஏற்ப பயன்படுத்தவும். பாதுகாப்பான, சமமான தரவு மீட்டெடுப்புக்கு
GET
ஐப் பயன்படுத்தவும், மேலும் நிலைய மாற்றும் செயல்களுக்குPOST
,PUT
மற்றும்DELETE
ஐப் பயன்படுத்தவும். நிலைய மாற்றும் செயல்பாடுகளுக்குGET
ஐ ஒருபோதும் பயன்படுத்த வேண்டாம்.
தூண் 6: பதிவு செய்தல், கண்காணித்தல் மற்றும் சம்பவ பதில்
உங்களால் பார்க்க முடியாததற்கு எதிராக நீங்கள் பாதுகாக்க முடியாது. ஒரு வலுவான பதிவு மற்றும் கண்காணிப்பு அமைப்பு என்பது உங்கள் பாதுகாப்பு நரம்பு மண்டலம் ஆகும், இது நிகழ்நேரத்தில் சாத்தியமான அச்சுறுத்தல்களை உங்களுக்கு எச்சரிக்கிறது.
என்ன பதிவு செய்வது
- அங்கீகார முயற்சிகள் (வெற்றிகரமான மற்றும் தோல்வியுற்றவை இரண்டும்)
- அங்கீகார தோல்விகள் (அணுகல் மறுக்கப்பட்ட நிகழ்வுகள்)
- சேவையக பக்க உள்ளீடு சரிபார்ப்பு தோல்விகள்
- அதிக தீவிர பயன்பாட்டு பிழைகள்
- CSP மீறல் அறிக்கைகள்
முக்கியமாக, என்ன பதிவு செய்யக்கூடாது: கடவுச்சொற்கள், அமர்வு டோக்கன்கள், API விசைகள் அல்லது தனிப்பட்ட முறையில் அடையாளம் காணக்கூடிய தகவல் (PII) போன்ற முக்கியமான பயனர் தரவை ஒருபோதும் சாதாரண உரையில் பதிவு செய்ய வேண்டாம்.
நிகழ்நேர கண்காணிப்பு மற்றும் எச்சரிக்கை
உங்கள் பதிவுகள் ஒரு மையப்படுத்தப்பட்ட அமைப்பில் (ELK அடுக்கு - Elasticsearch, Logstash, Kibana - அல்லது Datadog அல்லது Splunk போன்ற சேவை) திரட்டப்பட வேண்டும். முக்கிய பாதுகாப்பு அளவீடுகளைக் காட்சிப்படுத்த டாஷ்போர்டுகளை உள்ளமைக்கவும் மற்றும் சந்தேகத்திற்கிடமான வடிவங்களுக்கு தானியங்கி விழிப்பூட்டல்களை அமைக்கவும், அதாவது:
- ஒரு ஒற்றை IP முகவரியிலிருந்து தோல்வியுற்ற உள்நுழைவு முயற்சிகளில் திடீர் ஸ்பைக்.
- ஒற்றை பயனர் கணக்கிற்கான பல அங்கீகார தோல்விகள்.
- சாத்தியமான XSS தாக்குதலைக் குறிக்கும் ஏராளமான CSP மீறல் அறிக்கைகள்.
சம்பவ பதில் திட்டம் வேண்டும்
சம்பவம் நிகழும்போது, முன் வரையறுக்கப்பட்ட திட்டம் இருப்பது முக்கியம். இது: அடையாளம் காண, தடுக்க, அழிக்க, மீட்க மற்றும் கற்றுக் கொள்ள படிகளை கோடிட்டுக் காட்ட வேண்டும். யாரை தொடர்பு கொள்ள வேண்டும்? சமரசம் செய்யப்பட்ட சான்றுகளை எவ்வாறு ரத்து செய்கிறீர்கள்? மீண்டும் நடக்காமல் தடுக்க மீறலை எவ்வாறு பகுப்பாய்வு செய்கிறீர்கள்? ஒரு சம்பவம் நடப்பதற்கு முன்பு இந்த கேள்விகளைப் பற்றி சிந்திப்பது ஒரு நெருக்கடியின் போது மேம்படுத்துவதை விட மிகவும் சிறந்தது.
முடிவுரை: பாதுகாப்புக் கலாச்சாரத்தை வளர்ப்பது
ஜாவாஸ்கிரிப்ட் பாதுகாப்பு உள்கட்டமைப்பை செயல்படுத்துவது ஒரு முறை திட்டம் அல்ல; இது ஒரு தொடர்ச்சியான செயல்முறை மற்றும் ஒரு கலாச்சார மனநிலை. இங்கே விவரிக்கப்பட்டுள்ள ஆறு தூண்கள் - உலாவி பாதுகாப்புகள், பாதுகாப்பான குறியீடாக்கம், AuthN/AuthZ, சார்பு பாதுகாப்பு, பாதுகாப்பான தரவு கையாளுதல் மற்றும் கண்காணிப்பு - மீள்தன்மை மற்றும் நம்பகமான பயன்பாடுகளை உருவாக்குவதற்கான ஒரு முழுமையான கட்டமைப்பை உருவாக்குகின்றன.
பாதுகாப்பு என்பது பகிரப்பட்ட பொறுப்பு. இதற்கு டெவலப்பர்கள், செயல்பாடுகள் மற்றும் பாதுகாப்பு குழுக்களிடையே ஒத்துழைப்பு தேவைப்படுகிறது - இது DevSecOps என்று அழைக்கப்படுகிறது. மென்பொருள் மேம்பாட்டு வாழ்க்கைச் சுழற்சியின் ஒவ்வொரு கட்டத்திலும் பாதுகாப்பை ஒருங்கிணைப்பதன் மூலம், வடிவமைப்பு மற்றும் குறியீட்டிலிருந்து வரிசைப்படுத்துதல் மற்றும் செயல்பாடுகள் வரை, நீங்கள் ஒரு எதிர்வினை பாதுகாப்பு நிலையிலிருந்து ஒரு செயலூக்கமான நிலைக்கு செல்ல முடியும்.
டிஜிட்டல் நிலப்பரப்பு தொடர்ந்து உருவாகும், மேலும் புதிய அச்சுறுத்தல்கள் வெளிப்படும். இருப்பினும், இந்த வலுவான, பல அடுக்கு அடித்தளத்தின் மீது கட்டமைப்பதன் மூலம், உங்கள் பயன்பாடுகள், உங்கள் தரவு மற்றும் உங்கள் பயனர்களைப் பாதுகாக்க நீங்கள் நன்கு பொருத்தப்படுவீர்கள். உங்கள் ஜாவாஸ்கிரிப்ட் பாதுகாப்பு கோட்டையை இன்றே கட்டத் தொடங்குங்கள்.