தமிழ்

கிராஸ்-சைட் ஸ்கிரிப்டிங் (XSS) தாக்குதல்களைத் தடுப்பதற்கும், வலுவான முகப்புப் பாதுகாப்பிற்காக உள்ளடக்கப் பாதுகாப்பு கொள்கையை (CSP) செயல்படுத்துவதற்கும் ஒரு விரிவான வழிகாட்டி.

முகப்புப் பாதுகாப்பு: XSS தடுப்பு மற்றும் உள்ளடக்கப் பாதுகாப்பு கொள்கை (CSP)

இன்றைய இணைய மேம்பாட்டுச் சூழலில், முகப்புப் பாதுகாப்பு மிக முக்கியமானது. இணையப் பயன்பாடுகள் பெருகிய முறையில் சிக்கலானதாகவும் ஊடாடும் விதத்திலும் மாறுவதால், அவை பல்வேறு தாக்குதல்களுக்கு, குறிப்பாக கிராஸ்-சைட் ஸ்கிரிப்டிங் (XSS) தாக்குதல்களுக்கு ஆளாகின்றன. இந்தக் கட்டுரை, XSS பாதிப்புகளைப் புரிந்துகொள்வதற்கும் தணிப்பதற்கும், மேலும் ஒரு வலுவான பாதுகாப்பு வழிமுறையாக உள்ளடக்கப் பாதுகாப்பு கொள்கையை (CSP) செயல்படுத்துவதற்கும் ஒரு விரிவான வழிகாட்டியை வழங்குகிறது.

கிராஸ்-சைட் ஸ்கிரிப்டிங் (XSS) பற்றி புரிந்துகொள்ளுதல்

XSS என்றால் என்ன?

கிராஸ்-சைட் ஸ்கிரிப்டிங் (XSS) என்பது ஒரு வகை ஊடுருவல் தாக்குதல் ஆகும், இதில் தீங்கிழைக்கும் ஸ்கிரிப்டுகள் தீங்கற்ற மற்றும் நம்பகமான வலைத்தளங்களில் செலுத்தப்படுகின்றன. ஒரு தாக்குபவர் இணையப் பயன்பாட்டைப் பயன்படுத்தி, பொதுவாக ஒரு உலாவி பக்க ஸ்கிரிப்ட் வடிவில், தீங்கிழைக்கும் குறியீட்டை மற்றொரு இறுதிப் பயனருக்கு அனுப்பும்போது XSS தாக்குதல்கள் நிகழ்கின்றன. இந்தத் தாக்குதல்கள் வெற்றிபெற அனுமதிக்கும் குறைபாடுகள் மிகவும் பரவலாக உள்ளன, மேலும் ஒரு இணையப் பயன்பாடு பயனரிடமிருந்து உள்ளீட்டை சரிபார்க்காமல் அல்லது குறியாக்கம் செய்யாமல் அதன் வெளியீட்டில் பயன்படுத்தும் எங்கும் இது நிகழலாம்.

பயனர்கள் கருத்துக்களைப் பதிவிடும் ஒரு பிரபலமான ஆன்லைன் மன்றத்தை கற்பனை செய்து பாருங்கள். அந்த மன்றம் பயனர் உள்ளீட்டை சரியாக சுத்திகரிக்கவில்லை என்றால், ஒரு தாக்குபவர் ஒரு தீங்கிழைக்கும் ஜாவாஸ்கிரிப்ட் துணுக்கை ஒரு கருத்தில் செலுத்த முடியும். மற்ற பயனர்கள் அந்தக் கருத்தைப் பார்க்கும்போது, தீங்கிழைக்கும் ஸ்கிரிப்ட் அவர்களின் உலாவிகளில் இயங்குகிறது, இது அவர்களின் குக்கீகளைத் திருடலாம், அவர்களை ஃபிஷிங் தளங்களுக்குத் திருப்பிவிடலாம் அல்லது வலைத்தளத்தை சிதைக்கலாம்.

XSS தாக்குதல்களின் வகைகள்

XSS-இன் தாக்கம்

ஒரு வெற்றிகரமான XSS தாக்குதலின் விளைவுகள் கடுமையாக இருக்கலாம்:

XSS தடுப்பு நுட்பங்கள்

XSS தாக்குதல்களைத் தடுப்பதற்கு ஒரு பல-அடுக்கு அணுகுமுறை தேவைப்படுகிறது, இது உள்ளீட்டு சரிபார்ப்பு மற்றும் வெளியீட்டு குறியாக்கம் இரண்டிலும் கவனம் செலுத்துகிறது.

உள்ளீட்டு சரிபார்ப்பு

உள்ளீட்டு சரிபார்ப்பு என்பது பயனர் உள்ளீடு எதிர்பார்க்கப்படும் வடிவம் மற்றும் தரவு வகைக்கு இணங்குகிறதா என்பதை சரிபார்க்கும் செயல்முறையாகும். இது XSS-க்கு எதிரான ஒரு முட்டாள்தனமான பாதுகாப்பு இல்லையென்றாலும், இது தாக்குதல் பரப்பைக் குறைக்க உதவுகிறது.

உதாரணம் (PHP):

<?php $username = $_POST['username']; // Whitelist validation: Allow only alphanumeric characters and underscores if (preg_match('/^[a-zA-Z0-9_]+$/', $username)) { // Valid username echo "Valid username: " . htmlspecialchars($username, ENT_QUOTES, 'UTF-8'); } else { // Invalid username echo "Invalid username. Only alphanumeric characters and underscores are allowed."; } ?>

வெளியீட்டு குறியாக்கம் (Escaping)

வெளியீட்டு குறியாக்கம், எஸ்கேப்பிங் என்றும் அழைக்கப்படுகிறது, இது சிறப்பு எழுத்துக்களை அவற்றின் HTML என்டிட்டிகளாக அல்லது URL-குறியாக்கம் செய்யப்பட்ட சமமானவையாக மாற்றும் செயல்முறையாகும். இது உலாவியை அந்த எழுத்துக்களை குறியீடாக விளக்குவதைத் தடுக்கிறது.

உதாரணம் (ஜாவாஸ்கிரிப்ட் - HTML குறியாக்கம்):

function escapeHTML(str) { let div = document.createElement('div'); div.appendChild(document.createTextNode(str)); return div.innerHTML; } let userInput = '<script>alert("XSS");</script>'; let encodedInput = escapeHTML(userInput); // Output the encoded input to the DOM document.getElementById('output').innerHTML = encodedInput; // Output: &lt;script&gt;alert("XSS");&lt;/script&gt;

உதாரணம் (பைத்தான் - HTML குறியாக்கம்):

import html user_input = '<script>alert("XSS");</script>' encoded_input = html.escape(user_input) print(encoded_input) # Output: &lt;script&gt;alert("XSS");&lt;/script&gt;

சூழல்-சார்ந்த குறியாக்கம்

நீங்கள் பயன்படுத்தும் குறியாக்கத்தின் வகை, தரவு காட்டப்படும் சூழலைப் பொறுத்தது. எடுத்துக்காட்டாக, நீங்கள் ஒரு HTML பண்புக்குள் தரவைக் காட்டுகிறீர்கள் என்றால், நீங்கள் HTML பண்பு குறியாக்கத்தைப் பயன்படுத்த வேண்டும். நீங்கள் ஒரு ஜாவாஸ்கிரிப்ட் சரத்திற்குள் தரவைக் காட்டுகிறீர்கள் என்றால், நீங்கள் ஜாவாஸ்கிரிப்ட் சரக் குறியாக்கத்தைப் பயன்படுத்த வேண்டும்.

உதாரணம்:

<input type="text" value="<?php echo htmlspecialchars($_GET['name'], ENT_QUOTES, 'UTF-8'); ?>">

இந்த எடுத்துக்காட்டில், URL-லிருந்து வரும் name அளவுருவின் மதிப்பு ஒரு உள்ளீட்டுப் புலத்தின் value பண்புக்குள் காட்டப்படுகிறது. htmlspecialchars() செயல்பாடு, name அளவுருவில் உள்ள எந்தவொரு சிறப்பு எழுத்துக்களும் சரியாக குறியாக்கம் செய்யப்படுவதை உறுதிசெய்கிறது, இது XSS தாக்குதல்களைத் தடுக்கிறது.

டெம்ப்ளேட் இன்ஜினைப் பயன்படுத்துதல்

பல நவீன இணைய கட்டமைப்புகள் மற்றும் டெம்ப்ளேட் இன்ஜின்கள் (எ.கா., React, Angular, Vue.js, Twig, Jinja2) தானியங்கி வெளியீட்டு குறியாக்க வழிமுறைகளை வழங்குகின்றன. இந்த இன்ஜின்கள் மாறிகளை டெம்ப்ளேட்களில் ரெண்டர் செய்யும்போது தானாகவே எஸ்கேப் செய்கின்றன, இது XSS பாதிப்புகளின் அபாயத்தைக் குறைக்கிறது. எப்போதும் உங்கள் டெம்ப்ளேட் இன்ஜினின் உள்ளமைக்கப்பட்ட எஸ்கேப்பிங் அம்சங்களைப் பயன்படுத்தவும்.

உள்ளடக்கப் பாதுகாப்பு கொள்கை (CSP)

CSP என்றால் என்ன?

உள்ளடக்கப் பாதுகாப்பு கொள்கை (CSP) என்பது ஒரு கூடுதல் பாதுகாப்பு அடுக்கு ஆகும், இது கிராஸ்-சைட் ஸ்கிரிப்டிங் (XSS) மற்றும் தரவு ஊடுருவல் தாக்குதல்கள் உள்ளிட்ட சில வகையான தாக்குதல்களைக் கண்டறிந்து தணிக்க உதவுகிறது. உலாவி எந்த மூலங்களிலிருந்து வளங்களை ஏற்ற அனுமதிக்கப்படுகிறது என்பதற்கான வெள்ளைப்பட்டியலை வரையறுக்க உங்களை அனுமதிப்பதன் மூலம் CSP செயல்படுகிறது. இந்த வெள்ளைப்பட்டியலில் டொமைன்கள், நெறிமுறைகள் மற்றும் குறிப்பிட்ட URL-கள் கூட இருக்கலாம்.

இயல்பாக, உலாவிகள் எந்தவொரு மூலத்திலிருந்தும் வளங்களை ஏற்ற இணையப் பக்கங்களை அனுமதிக்கின்றன. CSP இந்த இயல்புநிலை நடத்தையை, வளங்கள் ஏற்றப்படக்கூடிய மூலங்களைக் கட்டுப்படுத்துவதன் மூலம் மாற்றுகிறது. ஒரு வலைத்தளம் வெள்ளைப்பட்டியலில் இல்லாத ஒரு மூலத்திலிருந்து ஒரு வளத்தை ஏற்ற முயற்சித்தால், உலாவி அந்த கோரிக்கையைத் தடுக்கும்.

CSP எவ்வாறு செயல்படுகிறது

சேவையகத்திலிருந்து உலாவிக்கு ஒரு HTTP ரெஸ்பான்ஸ் ஹெடரை அனுப்புவதன் மூலம் CSP செயல்படுத்தப்படுகிறது. இந்த ஹெடரில் வழிகாட்டுதல்களின் பட்டியல் உள்ளது, ஒவ்வொன்றும் ஒரு குறிப்பிட்ட வகை வளத்திற்கான கொள்கையைக் குறிப்பிடுகிறது.

உதாரண CSP ஹெடர்:

Content-Security-Policy: default-src 'self'; script-src 'self' https://example.com; style-src 'self' https://cdn.example.com; img-src 'self' data:; font-src 'self';

இந்த ஹெடர் பின்வரும் கொள்கைகளை வரையறுக்கிறது:

CSP வழிகாட்டுதல்கள்

இங்கே மிகவும் பொதுவாக பயன்படுத்தப்படும் சில CSP வழிகாட்டுதல்கள் உள்ளன:

CSP மூலப் பட்டியல் மதிப்புகள்

ஒவ்வொரு CSP வழிகாட்டுதலும் மூல மதிப்புகளின் பட்டியலை ஏற்றுக்கொள்கிறது, இது அனுமதிக்கப்பட்ட மூலங்கள் அல்லது முக்கிய வார்த்தைகளைக் குறிப்பிடுகிறது.

CSP-ஐ செயல்படுத்துதல்

CSP-ஐ செயல்படுத்த பல வழிகள் உள்ளன:

உதாரணம் (HTTP ஹெடர் வழியாக CSP அமைத்தல் - அப்பாச்சி):

உங்கள் அப்பாச்சி கட்டமைப்பு கோப்பில் (எ.கா., .htaccess அல்லது httpd.conf), பின்வரும் வரியைச் சேர்க்கவும்:

Header set Content-Security-Policy "default-src 'self'; script-src 'self' https://example.com; style-src 'self' https://cdn.example.com; img-src 'self' data:; font-src 'self';"

உதாரணம் (HTTP ஹெடர் வழியாக CSP அமைத்தல் - Nginx):

உங்கள் Nginx கட்டமைப்பு கோப்பில் (எ.கா., nginx.conf), server பிளாக்கில் பின்வரும் வரியைச் சேர்க்கவும்:

add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://example.com; style-src 'self' https://cdn.example.com; img-src 'self' data:; font-src 'self';";

உதாரணம் (மெட்டா டேக் வழியாக CSP அமைத்தல்):

<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' https://example.com; style-src 'self' https://cdn.example.com; img-src 'self' data:; font-src 'self';">

CSP-ஐ சோதித்தல்

உங்கள் CSP செயல்படுத்தல் எதிர்பார்த்தபடி செயல்படுகிறதா என்பதை உறுதிப்படுத்த அதைச் சோதிப்பது மிகவும் முக்கியம். Content-Security-Policy ஹெடரை ஆய்வு செய்வதற்கும் ஏதேனும் மீறல்களைச் சரிபார்ப்பதற்கும் உலாவி டெவலப்பர் கருவிகளைப் பயன்படுத்தலாம்.

CSP அறிக்கையிடல்

CSP அறிக்கையிடலை உள்ளமைக்க `report-uri` அல்லது `report-to` வழிகாட்டுதல்களைப் பயன்படுத்தவும். CSP கொள்கை மீறப்படும்போது உங்கள் சேவையகம் அறிக்கைகளைப் பெற இது அனுமதிக்கிறது. இந்தத் தகவல் பாதுகாப்பு பாதிப்புகளைக் கண்டறிந்து சரிசெய்வதற்கு விலைமதிப்பற்றதாக இருக்கும்.

உதாரணம் (report-uri உடன் CSP):

Content-Security-Policy: default-src 'self'; report-uri /csp-report-endpoint;

உதாரணம் (report-to உடன் CSP - மிகவும் நவீனமானது):

Report-To: {"group":"csp-endpoint","max_age":10886400,"endpoints":[{"url":"https://your-domain.com/csp-report-endpoint"}]} Content-Security-Policy: default-src 'self'; report-to csp-endpoint;

சேவையகப் பக்க இறுதிப்புள்ளி (இந்த எடுத்துக்காட்டுகளில் `/csp-report-endpoint`) இந்த JSON அறிக்கைகளைப் பெற்று செயலாக்க உள்ளமைக்கப்பட வேண்டும், பின்னர் பகுப்பாய்விற்காக அவற்றை பதிவு செய்ய வேண்டும்.

CSP சிறந்த நடைமுறைகள்

உதாரணம் (நான்ஸ் செயல்படுத்தல்):

சர்வர்-பக்கம் (நான்ஸ் உருவாக்குதல்):

<?php $nonce = base64_encode(random_bytes(16)); ?>

HTML:

<script nonce="<?php echo $nonce; ?>"> // Your inline script here console.log('Inline script with nonce'); </script>

CSP ஹெடர்:

Content-Security-Policy: default-src 'self'; script-src 'self' 'nonce-<?php echo $nonce; ?>';

CSP மற்றும் மூன்றாம் தரப்பு நூலகங்கள்

மூன்றாம் தரப்பு நூலகங்கள் அல்லது CDN-களைப் பயன்படுத்தும்போது, உங்கள் CSP கொள்கையில் அவற்றின் டொமைன்களைச் சேர்க்க மறக்காதீர்கள். எடுத்துக்காட்டாக, நீங்கள் ஒரு CDN-லிருந்து jQuery-ஐப் பயன்படுத்துகிறீர்கள் என்றால், நீங்கள் CDN-இன் டொமைனை script-src வழிகாட்டுதலில் சேர்க்க வேண்டும்.

இருப்பினும், முழு CDN-களையும் கண்மூடித்தனமாக வெள்ளைப்பட்டியலில் சேர்ப்பது பாதுகாப்பு அபாயங்களை அறிமுகப்படுத்தலாம். CDN-களிலிருந்து ஏற்றப்பட்ட கோப்புகளின் ஒருமைப்பாட்டைச் சரிபார்க்க துணை வள ஒருமைப்பாட்டை (SRI) பயன்படுத்துவதைக் கருத்தில் கொள்ளுங்கள்.

துணை வள ஒருமைப்பாடு (SRI)

SRI என்பது ஒரு பாதுகாப்பு அம்சமாகும், இது CDN-கள் அல்லது பிற மூன்றாம் தரப்பு மூலங்களிலிருந்து பெறப்பட்ட கோப்புகள் சிதைக்கப்படவில்லை என்பதை சரிபார்க்க உலாவிகளை அனுமதிக்கிறது. பெறப்பட்ட கோப்பின் கிரிப்டோகிராஃபிக் ஹாஷை அறியப்பட்ட ஹாஷுடன் ஒப்பிடுவதன் மூலம் SRI செயல்படுகிறது. ஹாஷ்கள் பொருந்தவில்லை என்றால், உலாவி கோப்பை ஏற்றுவதைத் தடுக்கும்.

உதாரணம்:

<script src="https://example.com/jquery.min.js" integrity="sha384-example-hash" crossorigin="anonymous"></script>

integrity பண்புக்கூறு jquery.min.js கோப்பின் கிரிப்டோகிராஃபிக் ஹாஷைக் கொண்டுள்ளது. வெவ்வேறு மூலங்களிலிருந்து வழங்கப்படும் கோப்புகளுடன் SRI செயல்பட crossorigin பண்புக்கூறு தேவை.

முடிவுரை

முகப்புப் பாதுகாப்பு என்பது இணைய மேம்பாட்டின் ஒரு முக்கியமான அம்சமாகும். XSS தடுப்பு நுட்பங்கள் மற்றும் உள்ளடக்கப் பாதுகாப்பு கொள்கை (CSP) ஆகியவற்றைப் புரிந்துகொண்டு செயல்படுத்துவதன் மூலம், நீங்கள் தாக்குதல்களின் அபாயத்தைக் கணிசமாகக் குறைத்து உங்கள் பயனர்களின் தரவைப் பாதுகாக்கலாம். உள்ளீட்டு சரிபார்ப்பு, வெளியீட்டு குறியாக்கம், CSP மற்றும் பிற சிறந்த பாதுகாப்பு நடைமுறைகளை இணைத்து ஒரு பல-அடுக்கு அணுகுமுறையை பின்பற்ற நினைவில் கொள்ளுங்கள். பாதுகாப்பான மற்றும் வலுவான இணையப் பயன்பாடுகளை உருவாக்க சமீபத்திய பாதுகாப்பு அச்சுறுத்தல்கள் மற்றும் தணிப்பு நுட்பங்களுடன் தொடர்ந்து கற்றுக் கொண்டு புதுப்பித்த நிலையில் இருங்கள்.

இந்த வழிகாட்டி XSS தடுப்பு மற்றும் CSP-இன் ஒரு அடிப்படை புரிதலை வழங்குகிறது. பாதுகாப்பு என்பது ஒரு தொடர்ச்சியான செயல்முறை என்பதை நினைவில் கொள்ளுங்கள், மேலும் சாத்தியமான அச்சுறுத்தல்களுக்கு முன்னால் இருக்க தொடர்ச்சியான கற்றல் அவசியம். இந்த சிறந்த நடைமுறைகளைச் செயல்படுத்துவதன் மூலம், உங்கள் பயனர்களுக்கு மிகவும் பாதுகாப்பான மற்றும் நம்பகமான இணைய அனுபவத்தை உருவாக்க முடியும்.