# ক্রস-সাইট স্ক্রিপ্টিং (Cross-Site Scripting) কী?
ক্রস-সাইট স্ক্রিপ্টিং, সাধারণত XSS হিসাবে উল্লেখ করা হয়। এই আক্রমণে আক্রমণকারী অন্য ব্যবহারকারীর ব্রাউজরে ক্ষতিকর জাভাস্ক্রিপ্ট কোড চালায়। এই পদ্ধতিতে আক্রমণকারী বিভিন্ন ভাবে কোনো স্ক্রিপ্ট সাইট এ পুশ করে থাকে এবং যখন অন্য কেউ সেই সাইট ব্রাউজ করে তখন সেই স্ক্রিপ্ট রান হয় বা সেই স্ক্রিপ্ট কাজ করে। একটা উদহারন দেয়া যাক।
মনে করেন আপনি একটি ব্লগ সাইট তৈরী করেছেন (PHP) language দিয়ে। এবং সেখানে কমেন্ট করার অপশন আছে তাই যে কেউ তাদের মন্তব্য লিখতে পারবে এবং কে কি মন্তব্য করছে সেখানে দেখা যাচ্ছে। যদি নরমালি Informative Information লিখে কেউ কমেন্ট করে তা ওয়েবসাইট এর ডাটাবেজ এ store হবে এবং তা সাইটের কমেন্ট সেকশন এ শো করবে। যদি কোনো আক্রমণকারি plain text এর পরিবর্তে কমেন্ট এ জাভাস্ক্রিপ্ট কোডটি <script>alert("XSS")</script> ইনজেক্ট করে তাহলে কী হবে? এখন ওয়েবসাইটের owner যদি ইনপুট ফিল্টার না করে তাহলে ডাইরেক্টলী জাভাস্ক্রিপ্ট এর কোডটি ডাটাবেজ এ store হবে এবং পোস্টটিতে কমেন্ট হিসেবে সেভ হবে। এখন যদি কেউ ওই ব্লগ পোস্টটি ভিজিট করে তাহলে ঐ জাভাস্ক্রিপ্ট কোডটি এক্সিকিউট হবে এবং "XSS" পপআপটি শো করবে। XSS অ্যাটাক পরিচালনা করার জন্যে একজন আক্রমণকারীকে প্রথমে একটি ওয়েব পৃষ্ঠাতে ক্ষতিকারক কোড (পেলোড) ইনজেক্ট করার উপায় খুঁজে বের করতে হবে। এভাবেই ক্রস-সাইট স্ক্রিপ্টিং (Cross-Site SCRIPTING-XSS) কাজ করে।
# ক্রস-সাইট স্ক্রিপ্টিং এর প্রকারভেদ:
ক্রস-সাইট স্ক্রিপ্টিং আক্রমণ সাধারনত তিন ধরনের,
* Reflected XSS -- (যেখানে ক্ষতিকারক স্ক্রিপ্ট বর্তমান HTTP অনুরোধ থেকে আসে)
* Stored XSS -- (যেখানে ক্ষতিকারক স্ক্রিপ্ট ওয়েবসাইটের ডাটাবেস থেকে আসে)
* DOM-Based XSS -- (যেখানে দুর্বলতা সার্ভার-সাইড কোডের পরিবর্তে ক্লায়েন্ট-সাইড কোডে বিদ্যমান)
# ক্রস-সাইট স্ক্রিপ্টিং এর মাধ্যমে ব্যবহারাকারীর কি ক্ষতি হতে পারে?
ক্রস সাইট স্ক্রিপ্টিং প্রায় সবকিছু করতে পারে! নিচে কিছু বিষয় উল্লেখ করা হলো:
* ফিশিং (Phishing): আক্রমণকারী dom ম্যানিপুলেশনের মাধ্যমে ওয়েবসাইটে একটি নকল (fake) লগইন ফর্ম তৈরি করে ব্যবহারকারীকে ফাঁদে ফেলে তার সংবেদনশীল তথ্য হাতিয়ে নিতে পারে।
* কুকি (cookie) stealing: আক্রমণকারী document.cookie ব্যবহার করে ওয়েবসাইটের সাথে সম্পর্কিত ব্যবহারকারীর কুকিজ (cookies) অ্যাক্সেস করতে পারে এবং সেগুলি তার নিজস্ব সার্ভারে প্রেরণ করতে পারে। সেশন (session) আইডির মতো সংবেদনশীল তথ্য ব্যবহার করে ব্যবহারকারীর একাউন্টের নিয়ন্ত্রণ নিতে পারে।
* কী লগিং (Key logging): আক্রমণকারী addEventListener মেথড ব্যবহার করে ব্যবহারকারীর কীবোর্ডের প্রতিটি কীস্ট্রোক (keystrokes) রেকর্ড করে তার নিজস্ব সার্ভারে প্রেরণ করতে পারে। এভাবে ব্যবহারকারীর সংবেদনশীল তথ্য যেমন পাসওয়ার্ড এবং ক্রেডিট কার্ড নম্বর ইত্যাদি আক্রমণকারী পেতে পারে।
* ওয়েব সাইটের ভার্চুয়াল ডিফেসমেন্ট সঞ্চালন.
* ওয়েব ব্রাউজার-ভিত্তিক exploit চালানো (যেমন, ব্রাউজার ক্র্যাশ করা)