கிராஸ்-சைட் ஸ்கிரிப்டிங் (XSS) தாக்குதல்களைத் தடுப்பதற்கும், வலுவான முகப்புப் பாதுகாப்பிற்காக உள்ளடக்கப் பாதுகாப்பு கொள்கையை (CSP) செயல்படுத்துவதற்கும் ஒரு விரிவான வழிகாட்டி.
முகப்புப் பாதுகாப்பு: XSS தடுப்பு மற்றும் உள்ளடக்கப் பாதுகாப்பு கொள்கை (CSP)
இன்றைய இணைய மேம்பாட்டுச் சூழலில், முகப்புப் பாதுகாப்பு மிக முக்கியமானது. இணையப் பயன்பாடுகள் பெருகிய முறையில் சிக்கலானதாகவும் ஊடாடும் விதத்திலும் மாறுவதால், அவை பல்வேறு தாக்குதல்களுக்கு, குறிப்பாக கிராஸ்-சைட் ஸ்கிரிப்டிங் (XSS) தாக்குதல்களுக்கு ஆளாகின்றன. இந்தக் கட்டுரை, XSS பாதிப்புகளைப் புரிந்துகொள்வதற்கும் தணிப்பதற்கும், மேலும் ஒரு வலுவான பாதுகாப்பு வழிமுறையாக உள்ளடக்கப் பாதுகாப்பு கொள்கையை (CSP) செயல்படுத்துவதற்கும் ஒரு விரிவான வழிகாட்டியை வழங்குகிறது.
கிராஸ்-சைட் ஸ்கிரிப்டிங் (XSS) பற்றி புரிந்துகொள்ளுதல்
XSS என்றால் என்ன?
கிராஸ்-சைட் ஸ்கிரிப்டிங் (XSS) என்பது ஒரு வகை ஊடுருவல் தாக்குதல் ஆகும், இதில் தீங்கிழைக்கும் ஸ்கிரிப்டுகள் தீங்கற்ற மற்றும் நம்பகமான வலைத்தளங்களில் செலுத்தப்படுகின்றன. ஒரு தாக்குபவர் இணையப் பயன்பாட்டைப் பயன்படுத்தி, பொதுவாக ஒரு உலாவி பக்க ஸ்கிரிப்ட் வடிவில், தீங்கிழைக்கும் குறியீட்டை மற்றொரு இறுதிப் பயனருக்கு அனுப்பும்போது XSS தாக்குதல்கள் நிகழ்கின்றன. இந்தத் தாக்குதல்கள் வெற்றிபெற அனுமதிக்கும் குறைபாடுகள் மிகவும் பரவலாக உள்ளன, மேலும் ஒரு இணையப் பயன்பாடு பயனரிடமிருந்து உள்ளீட்டை சரிபார்க்காமல் அல்லது குறியாக்கம் செய்யாமல் அதன் வெளியீட்டில் பயன்படுத்தும் எங்கும் இது நிகழலாம்.
பயனர்கள் கருத்துக்களைப் பதிவிடும் ஒரு பிரபலமான ஆன்லைன் மன்றத்தை கற்பனை செய்து பாருங்கள். அந்த மன்றம் பயனர் உள்ளீட்டை சரியாக சுத்திகரிக்கவில்லை என்றால், ஒரு தாக்குபவர் ஒரு தீங்கிழைக்கும் ஜாவாஸ்கிரிப்ட் துணுக்கை ஒரு கருத்தில் செலுத்த முடியும். மற்ற பயனர்கள் அந்தக் கருத்தைப் பார்க்கும்போது, தீங்கிழைக்கும் ஸ்கிரிப்ட் அவர்களின் உலாவிகளில் இயங்குகிறது, இது அவர்களின் குக்கீகளைத் திருடலாம், அவர்களை ஃபிஷிங் தளங்களுக்குத் திருப்பிவிடலாம் அல்லது வலைத்தளத்தை சிதைக்கலாம்.
XSS தாக்குதல்களின் வகைகள்
- பிரதிபலிப்பு XSS (Reflected XSS): தீங்கிழைக்கும் ஸ்கிரிப்ட் ஒரு ஒற்றை கோரிக்கையில் செலுத்தப்படுகிறது. சேவையகம் செலுத்தப்பட்ட தரவை HTTP கோரிக்கையிலிருந்து படித்து, அதை பயனருக்குத் திருப்பி அனுப்புகிறது, இதன் மூலம் ஸ்கிரிப்ட் அவர்களின் உலாவியில் இயங்குகிறது. இது பெரும்பாலும் தீங்கிழைக்கும் இணைப்புகளைக் கொண்ட ஃபிஷிங் மின்னஞ்சல்கள் மூலம் அடையப்படுகிறது.
- சேமிக்கப்பட்ட XSS (Stored XSS): தீங்கிழைக்கும் ஸ்கிரிப்ட் இலக்கு சேவையகத்தில் (எ.கா., ஒரு தரவுத்தளம், மன்ற இடுகை, அல்லது கருத்துப் பிரிவு) சேமிக்கப்படுகிறது. மற்ற பயனர்கள் சேமிக்கப்பட்ட தரவை அணுகும்போது, ஸ்கிரிப்ட் அவர்களின் உலாவிகளில் இயங்குகிறது. இந்த வகை XSS அதிக எண்ணிக்கையிலான பயனர்களை பாதிக்கக்கூடும் என்பதால் இது மிகவும் ஆபத்தானது.
- DOM-அடிப்படையிலான XSS (DOM-based XSS): இந்த பாதிப்பு கிளையன்ட் பக்க ஜாவாஸ்கிரிப்ட் குறியீட்டிலேயே உள்ளது. இந்தத் தாக்குதல் பாதிக்கப்பட்டவரின் உலாவியில் உள்ள DOM (Document Object Model)-ஐ கையாளுகிறது, இதனால் தீங்கிழைக்கும் ஸ்கிரிப்ட் இயங்குகிறது. இது பெரும்பாலும் URL-கள் அல்லது பிற கிளையன்ட் பக்க தரவைக் கையாளுவதை உள்ளடக்கியது.
XSS-இன் தாக்கம்
ஒரு வெற்றிகரமான XSS தாக்குதலின் விளைவுகள் கடுமையாக இருக்கலாம்:
- குக்கீ திருட்டு: தாக்குபவர்கள் பயனர் குக்கீகளைத் திருடி, அவர்களின் கணக்குகள் மற்றும் முக்கியமான தகவல்களை அணுக முடியும்.
- கணக்கு அபகரிப்பு: திருடப்பட்ட குக்கீகள் மூலம், தாக்குபவர்கள் பயனர்களைப் போல ஆள்மாறாட்டம் செய்து அவர்கள் சார்பாக செயல்களைச் செய்ய முடியும்.
- வலைத்தள சிதைப்பு: தாக்குபவர்கள் வலைத்தளத்தின் தோற்றத்தை மாற்றி, தவறான தகவல்களைப் பரப்பலாம் அல்லது பிராண்டின் நற்பெயரை சேதப்படுத்தலாம்.
- ஃபிஷிங் தளங்களுக்குத் திருப்பிவிடுதல்: பயனர்கள் அவர்களின் உள்நுழைவு சான்றுகளைத் திருடும் அல்லது மால்வேரை நிறுவும் தீங்கிழைக்கும் வலைத்தளங்களுக்குத் திருப்பிவிடப்படலாம்.
- தரவு வெளிக்கசிவு: பக்கத்தில் காட்டப்படும் முக்கியமான தரவைத் திருடி தாக்குபவரின் சேவையகத்திற்கு அனுப்ப முடியும்.
XSS தடுப்பு நுட்பங்கள்
XSS தாக்குதல்களைத் தடுப்பதற்கு ஒரு பல-அடுக்கு அணுகுமுறை தேவைப்படுகிறது, இது உள்ளீட்டு சரிபார்ப்பு மற்றும் வெளியீட்டு குறியாக்கம் இரண்டிலும் கவனம் செலுத்துகிறது.
உள்ளீட்டு சரிபார்ப்பு
உள்ளீட்டு சரிபார்ப்பு என்பது பயனர் உள்ளீடு எதிர்பார்க்கப்படும் வடிவம் மற்றும் தரவு வகைக்கு இணங்குகிறதா என்பதை சரிபார்க்கும் செயல்முறையாகும். இது XSS-க்கு எதிரான ஒரு முட்டாள்தனமான பாதுகாப்பு இல்லையென்றாலும், இது தாக்குதல் பரப்பைக் குறைக்க உதவுகிறது.
- வெள்ளைப்பட்டியல் சரிபார்ப்பு: அனுமதிக்கப்பட்ட எழுத்துக்கள் மற்றும் வடிவங்களின் கடுமையான தொகுப்பை வரையறுக்கவும். வெள்ளைப்பட்டியலுடன் பொருந்தாத எந்த உள்ளீட்டையும் நிராகரிக்கவும். எடுத்துக்காட்டாக, ஒரு பயனர் ஒரு பெயரை உள்ளிடுவார் என்று நீங்கள் எதிர்பார்த்தால், எழுத்துக்கள், இடைவெளிகள் மற்றும் ஒருவேளை ஹைபன்களை மட்டுமே அனுமதிக்கவும்.
- கரும்பட்டியல் சரிபார்ப்பு: அறியப்பட்ட தீங்கிழைக்கும் எழுத்துக்கள் அல்லது வடிவங்களைக் கண்டறிந்து தடுக்கவும். இருப்பினும், கரும்பட்டியல்கள் பெரும்பாலும் முழுமையற்றவை மற்றும் புத்திசாலி தாக்குபவர்களால் கடந்து செல்லப்படலாம். பொதுவாக கரும்பட்டியல் சரிபார்ப்பை விட வெள்ளைப்பட்டியல் சரிபார்ப்பு விரும்பப்படுகிறது.
- தரவு வகை சரிபார்ப்பு: உள்ளீடு எதிர்பார்க்கப்படும் தரவு வகையுடன் (எ.கா., முழு எண், மின்னஞ்சல் முகவரி, URL) பொருந்துகிறதா என்பதை உறுதிப்படுத்தவும்.
- நீள வரம்புகள்: பஃபர் ஓவர்ஃப்ளோ பாதிப்புகளைத் தடுக்க உள்ளீட்டு புலங்களில் அதிகபட்ச நீள வரம்புகளை விதிக்கவும்.
உதாரணம் (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 குறியாக்கம்: HTML-இல் சிறப்புப் பொருள் கொண்ட எழுத்துக்களான
<
,>
,&
,"
, மற்றும்'
ஆகியவற்றை எஸ்கேப் செய்யவும். PHP-இல்htmlspecialchars()
போன்ற செயல்பாடுகளை அல்லது பிற மொழிகளில் சமமான முறைகளைப் பயன்படுத்தவும். - URL குறியாக்கம்: URL-களில் சிறப்புப் பொருள் கொண்ட எழுத்துக்களான இடைவெளிகள், சாய்வுகள் மற்றும் கேள்விக்குறிகள் போன்றவற்றை குறியாக்கம் செய்யவும். PHP-இல்
urlencode()
போன்ற செயல்பாடுகளை அல்லது பிற மொழிகளில் சமமான முறைகளைப் பயன்படுத்தவும். - ஜாவாஸ்கிரிப்ட் குறியாக்கம்: ஜாவாஸ்கிரிப்டில் சிறப்புப் பொருள் கொண்ட எழுத்துக்களான ஒற்றை மேற்கோள்கள், இரட்டை மேற்கோள்கள் மற்றும் பின்சாய்வுகள் போன்றவற்றை எஸ்கேப் செய்யவும்.
JSON.stringify()
போன்ற செயல்பாடுகளை அல்லதுESAPI
(Encoder) போன்ற நூலகங்களைப் பயன்படுத்தவும்.
உதாரணம் (ஜாவாஸ்கிரிப்ட் - 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: <script>alert("XSS");</script>
உதாரணம் (பைத்தான் - HTML குறியாக்கம்):
import html
user_input = '<script>alert("XSS");</script>'
encoded_input = html.escape(user_input)
print(encoded_input) # Output: <script>alert("XSS");</script>
சூழல்-சார்ந்த குறியாக்கம்
நீங்கள் பயன்படுத்தும் குறியாக்கத்தின் வகை, தரவு காட்டப்படும் சூழலைப் பொறுத்தது. எடுத்துக்காட்டாக, நீங்கள் ஒரு 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';
இந்த ஹெடர் பின்வரும் கொள்கைகளை வரையறுக்கிறது:
default-src 'self'
: இணையப் பக்கத்தின் அதே மூலத்திலிருந்து (டொமைன்) மட்டுமே வளங்களை ஏற்ற அனுமதிக்கிறது.script-src 'self' https://example.com
: அதே மூலத்திலிருந்தும் மற்றும்https://example.com
-லிருந்தும் ஜாவாஸ்கிரிப்டை ஏற்ற அனுமதிக்கிறது.style-src 'self' https://cdn.example.com
: அதே மூலத்திலிருந்தும் மற்றும்https://cdn.example.com
-லிருந்தும் CSS-ஐ ஏற்ற அனுமதிக்கிறது.img-src 'self' data:
: அதே மூலத்திலிருந்தும் மற்றும் தரவு URI-களிலிருந்தும் (base64-குறியாக்கம் செய்யப்பட்ட படங்கள்) படங்களை ஏற்ற அனுமதிக்கிறது.font-src 'self'
: அதே மூலத்திலிருந்து எழுத்துருக்களை ஏற்ற அனுமதிக்கிறது.
CSP வழிகாட்டுதல்கள்
இங்கே மிகவும் பொதுவாக பயன்படுத்தப்படும் சில CSP வழிகாட்டுதல்கள் உள்ளன:
default-src
: அனைத்து வள வகைகளுக்கும் இயல்புநிலைக் கொள்கையை அமைக்கிறது.script-src
: எந்த மூலங்களிலிருந்து ஜாவாஸ்கிரிப்ட் ஏற்றப்படலாம் என்பதை வரையறுக்கிறது.style-src
: எந்த மூலங்களிலிருந்து CSS ஏற்றப்படலாம் என்பதை வரையறுக்கிறது.img-src
: எந்த மூலங்களிலிருந்து படங்கள் ஏற்றப்படலாம் என்பதை வரையறுக்கிறது.font-src
: எந்த மூலங்களிலிருந்து எழுத்துருக்கள் ஏற்றப்படலாம் என்பதை வரையறுக்கிறது.connect-src
: கிளையன்ட் எந்த மூலங்களுடன் இணைக்க முடியும் என்பதை வரையறுக்கிறது (எ.கா., WebSockets, XMLHttpRequest வழியாக).media-src
: எந்த மூலங்களிலிருந்து ஆடியோ மற்றும் வீடியோ ஏற்றப்படலாம் என்பதை வரையறுக்கிறது.object-src
: எந்த மூலங்களிலிருந்து செருகுநிரல்கள் (எ.கா., Flash) ஏற்றப்படலாம் என்பதை வரையறுக்கிறது.frame-src
: எந்த மூலங்களை பிரேம்களாக (<frame>
,<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` ஹெடரில் வரையறுக்கப்பட்ட ஒரு குழுவின் பெயரைக் குறிப்பிடுகிறது, இது மீறல் அறிக்கைகளை அனுப்புவதற்கான இறுதிப்புள்ளிகளைக் கொண்டுள்ளது. `report-uri`-க்கு மாற்றான, மிகவும் நவீன மற்றும் நெகிழ்வானது.
CSP மூலப் பட்டியல் மதிப்புகள்
ஒவ்வொரு CSP வழிகாட்டுதலும் மூல மதிப்புகளின் பட்டியலை ஏற்றுக்கொள்கிறது, இது அனுமதிக்கப்பட்ட மூலங்கள் அல்லது முக்கிய வார்த்தைகளைக் குறிப்பிடுகிறது.
'self'
: இணையப் பக்கத்தின் அதே மூலத்திலிருந்து வரும் வளங்களை அனுமதிக்கிறது.'none'
: அனைத்து மூலங்களிலிருந்தும் வரும் வளங்களை அனுமதிக்காது.'unsafe-inline'
: இன்லைன் ஜாவாஸ்கிரிப்ட் மற்றும் CSS-ஐ அனுமதிக்கிறது. இது XSS-க்கு எதிரான பாதுகாப்பைக் குறைப்பதால், முடிந்தவரை இதைத் தவிர்க்க வேண்டும்.'unsafe-eval'
:eval()
மற்றும் தொடர்புடைய செயல்பாடுகளின் பயன்பாட்டை அனுமதிக்கிறது. இது பாதுகாப்பு பாதிப்புகளை அறிமுகப்படுத்தக்கூடும் என்பதால், இதையும் தவிர்க்க வேண்டும்.'strict-dynamic'
: மார்க்கப்பில் ஒரு ஸ்கிரிப்ட்டிற்கு வெளிப்படையாக கொடுக்கப்பட்ட நம்பிக்கை, அதனுடன் இணைந்த நான்ஸ் அல்லது ஹாஷ் வழியாக, அந்த ரூட் ஸ்கிரிப்ட்டால் ஏற்றப்படும் அனைத்து ஸ்கிரிப்ட்களுக்கும் பரப்பப்பட வேண்டும் என்பதைக் குறிப்பிடுகிறது.https://example.com
: ஒரு குறிப்பிட்ட டொமைனிலிருந்து வளங்களை அனுமதிக்கிறது.*.example.com
: ஒரு குறிப்பிட்ட டொமைனின் எந்தவொரு துணை டொமைனிலிருந்தும் வளங்களை அனுமதிக்கிறது.data:
: தரவு URI-களை (base64-குறியாக்கம் செய்யப்பட்ட படங்கள்) அனுமதிக்கிறது.mediastream:
: `media-src`-க்கு `mediastream:` URI-களை அனுமதிக்கிறது.blob:
: `blob:` URI-களை (உலாவியின் நினைவகத்தில் சேமிக்கப்பட்ட பைனரி தரவிற்காகப் பயன்படுத்தப்படுகிறது) அனுமதிக்கிறது.filesystem:
: `filesystem:` URI-களை (உலாவியின் சாண்ட்பாக்ஸ் செய்யப்பட்ட கோப்பு முறைமையில் சேமிக்கப்பட்ட கோப்புகளை அணுகுவதற்குப் பயன்படுத்தப்படுகிறது) அனுமதிக்கிறது.nonce-{random-value}
: பொருந்தக்கூடியnonce
பண்புக்கூறு கொண்ட இன்லைன் ஸ்கிரிப்டுகள் அல்லது ஸ்டைல்களை அனுமதிக்கிறது.sha256-{hash-value}
: பொருந்தக்கூடியsha256
ஹாஷ் கொண்ட இன்லைன் ஸ்கிரிப்டுகள் அல்லது ஸ்டைல்களை அனுமதிக்கிறது.
CSP-ஐ செயல்படுத்துதல்
CSP-ஐ செயல்படுத்த பல வழிகள் உள்ளன:
- HTTP ஹெடர்: CSP-ஐ செயல்படுத்த மிகவும் பொதுவான வழி, சேவையகத்தின் பதவியில்
Content-Security-Policy
HTTP ஹெடரை அமைப்பதாகும். - மெட்டா டேக்: HTML ஆவணத்தில் ஒரு
<meta>
டேக்கைப் பயன்படுத்தியும் CSP-ஐ வரையறுக்கலாம். இருப்பினும், இந்த முறை குறைவான நெகிழ்வானது மற்றும் சில வரம்புகளைக் கொண்டுள்ளது (எ.கா.,frame-ancestors
வழிகாட்டுதலை வரையறுக்க இதைப் பயன்படுத்த முடியாது).
உதாரணம் (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 சிறந்த நடைமுறைகள்
- ஒரு கடுமையான கொள்கையுடன் தொடங்கவும்: அதே மூலத்திலிருந்து (
default-src 'self'
) மட்டுமே வளங்களை அனுமதிக்கும் ஒரு கட்டுப்பாட்டுக் கொள்கையுடன் தொடங்கவும். தேவைக்கேற்ப படிப்படியாக கொள்கையைத் தளர்த்தவும், தேவைக்கேற்ப குறிப்பிட்ட மூலங்களைச் சேர்க்கவும். 'unsafe-inline'
மற்றும்'unsafe-eval'
ஆகியவற்றைத் தவிர்க்கவும்: இந்த வழிகாட்டுதல்கள் XSS-க்கு எதிரான பாதுகாப்பை கணிசமாகக் குறைக்கின்றன. முடிந்தவரை அவற்றைத் தவிர்க்க முயற்சிக்கவும். இன்லைன் ஸ்கிரிப்டுகள் மற்றும் ஸ்டைல்களுக்கு நான்ஸ்கள் அல்லது ஹாஷ்களைப் பயன்படுத்தவும், மேலும்eval()
பயன்படுத்துவதைத் தவிர்க்கவும்.- இன்லைன் ஸ்கிரிப்டுகள் மற்றும் ஸ்டைல்களுக்கு நான்ஸ்கள் அல்லது ஹாஷ்களைப் பயன்படுத்தவும்: நீங்கள் இன்லைன் ஸ்கிரிப்டுகள் அல்லது ஸ்டைல்களைப் பயன்படுத்த வேண்டியிருந்தால், அவற்றை வெள்ளைப்பட்டியலில் சேர்க்க நான்ஸ்கள் அல்லது ஹாஷ்களைப் பயன்படுத்தவும்.
- CSP அறிக்கையிடலைப் பயன்படுத்தவும்: கொள்கை மீறப்படும்போது அறிவிப்புகளைப் பெற CSP அறிக்கையிடலை உள்ளமைக்கவும். இது பாதுகாப்பு பாதிப்புகளைக் கண்டறிந்து சரிசெய்ய உதவும்.
- உங்கள் CSP செயல்படுத்தலை முழுமையாக சோதிக்கவும்:
Content-Security-Policy
ஹெடரை ஆய்வு செய்வதற்கும் ஏதேனும் மீறல்களைச் சரிபார்ப்பதற்கும் உலாவி டெவலப்பர் கருவிகளைப் பயன்படுத்தவும். - ஒரு CSP ஜெனரேட்டரைப் பயன்படுத்தவும்: பல ஆன்லைன் கருவிகள் உங்கள் குறிப்பிட்ட தேவைகளின் அடிப்படையில் CSP ஹெடர்களை உருவாக்க உதவும்.
- CSP அறிக்கைகளைக் கண்காணிக்கவும்: சாத்தியமான பாதுகாப்புச் சிக்கல்களைக் கண்டறிந்து உங்கள் கொள்கையைச் செம்மைப்படுத்த CSP அறிக்கைகளைத் தவறாமல் மதிப்பாய்வு செய்யவும்.
- உங்கள் CSP-ஐ புதுப்பித்த நிலையில் வைத்திருக்கவும்: உங்கள் வலைத்தளம் உருவாகும்போது, வள சார்புகளில் ஏற்படும் மாற்றங்களைப் பிரதிபலிக்கும் வகையில் உங்கள் CSP-ஐ புதுப்பிக்க மறக்காதீர்கள்.
- ஒரு உள்ளடக்கப் பாதுகாப்பு கொள்கை (CSP) லின்டரைப் பயன்படுத்தவும்: `csp-html-webpack-plugin` அல்லது உலாவி நீட்டிப்புகள் போன்ற கருவிகள் உங்கள் CSP உள்ளமைவைச் சரிபார்த்து மேம்படுத்த உதவும்.
- படிப்படியாக CSP-ஐ அமல்படுத்தவும் (அறிக்கை-மட்டும் பயன்முறை): ஆரம்பத்தில் `Content-Security-Policy-Report-Only` ஹெடரைப் பயன்படுத்தி CSP-ஐ "அறிக்கை-மட்டும்" பயன்முறையில் பயன்படுத்தவும். இது வளங்களைத் தடுக்காமல் சாத்தியமான கொள்கை மீறல்களைக் கண்காணிக்க உங்களை அனுமதிக்கிறது. அதை அமல்படுத்துவதற்கு முன் உங்கள் 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-இன் ஒரு அடிப்படை புரிதலை வழங்குகிறது. பாதுகாப்பு என்பது ஒரு தொடர்ச்சியான செயல்முறை என்பதை நினைவில் கொள்ளுங்கள், மேலும் சாத்தியமான அச்சுறுத்தல்களுக்கு முன்னால் இருக்க தொடர்ச்சியான கற்றல் அவசியம். இந்த சிறந்த நடைமுறைகளைச் செயல்படுத்துவதன் மூலம், உங்கள் பயனர்களுக்கு மிகவும் பாதுகாப்பான மற்றும் நம்பகமான இணைய அனுபவத்தை உருவாக்க முடியும்.