XSS (Cross Site Scripting) কি?
XSS (ক্রস-সাইট স্ক্রিপ্টিং) হল এক ধরনের সিকিউরিটি ভালনারেবিলিটি যা একজন attacker কে অন্য ব্যবহারকারীদের দ্বারা দেখা ওয়েবসাইটটিতে malicious code ইনজেক্ট করে । ইনজেকশন করা কোডটি login credentials এর মতো সেনসিটিভ ডাটা চুরি করতে বা ব্যবহারকারীর পক্ষ থেকে অননুমোদিত কেনাকাটা করার মতো কাজ করতে ব্যবহার করা যেতে পারে। এটি ঘটতে পারে যখন একজন attacker একটি ওয়েবপেজে একটি স্ক্রিপ্ট insert করতে সক্ষম হয়, যা সেই পেজটি দেখা user দের ব্রাউজার দ্বারা execute করা হয়।
Victim এর ব্রাউজারে একটি malicious script চালানো শুরু করবে, যা cookies চুরি করতে পারে, সাইটের বিষয়বস্তু পরিবর্তন করতে পারে বা user কে একটি malicious website এ পাঠাতে পারে। এই স্ক্রিপ্টগুলি সাধারণত JavaScript code, তবে সেগুলি অন্যান্য language এও লেখা যেতে পারে।
প্রক্রিয়া:
একটি এক্সিকিউটেবল স্ক্রিপ্ট একটি XSS attack এর সময় user দ্বারা দেখা HTML page গুলিতে ইনজেক্ট করা হয়। এর মানে হল XSS-এর জন্য HTML এবং JavaScript syntax জানা জরুরি ।
XSS এর প্রকারভেদ:
তিনটি ভিন্ন ধরনের XSS রয়েছে :
- Stored XSS: যখন user এর ইনপুট একটি সার্ভারে সংরক্ষণ করা হয় এবং unsafely restore করা হয়, তখন সংরক্ষিত XSS ঘটে। ক্ষতিকারক JavaScript কোড database এ প্রবেশ করতে পারে এবং তারপরে victim ব্রাউজারে তার পথ তৈরি করতে পারে যখন একটি অ্যাপ্লিকেশন এটিকে যাচাই না করেই user এর ইনপুট গ্রহণ করে, এটিকে তার সার্ভারে রাখে এবং তারপর এটিকে স্যানিটাইজেশন ছাড়াই ব্যবহারকারীদের ব্রাউজারে rander করে।
- Reflected XSS: যখন user এর ইনপুট একটি databseএ store না হয়ে user এর ফেরত দেওয়া হয়, তখন Reflected XSS vulnerability দেখা দেয়। প্রোগ্রামটি user এর ইনপুট গ্রহণ করে, এটি সার্ভারে প্রসেস করে এবং তারপর দ্রুত এটি user এর কাছে ফেরত পাঠায়।
- DOM-ভিত্তিক XSS: DOM-ভিত্তিক XSS Reflected XSS-এর সাথে তুলনীয়, ব্যতিক্রম যে DOM-ভিত্তিক XSS-এ user এর ইনপুট কখনই user এর ব্রাউজার ছেড়ে যায় না। প্রোগ্রামটি user এর ইনপুট গ্রহণ করে, attacker ব্রাউজারে এটি প্রসেস এরপর ফলাফলগুলি DOM-ভিত্তিক XSS-এ ফেরত পাঠায়।
XSS attack প্রতিরোধ করার বিভিন্ন উপায়:
- Input validation: নিশ্চিত করা যে সমস্ত user এর ইনপুট সঠিকভাবে স্যানিটাইজ করা এবং যাচাই করা হয়েছে। এর মধ্যে special character বা specific pattern এর জন্য পরীক্ষা করা অন্তর্ভুক্ত থাকতে পারে যা attack এর ইঙ্গিত দিতে পারে।
- Output encoding: User-generated content দেখানোর করার সময়, কোনো special character কে কোড হিসাবে execute করা থেকে বিরত রাখতে এনকোড করুন। এটি HTML encoding বা JavaScript encoding এর মতো ফাংশন ব্যবহার করে করা যেতে পারে।
- Use of Content Security Policy (CSP): CSP হল একটি security feature যা ওয়েব ডেভেলপারদের ব্রাউজার দ্বারা কোন content লোড করার অনুমতি দেওয়া হয়েছে তা নির্দিষ্ট করার permission দিয়ে XSS attacker এর ঝুঁকি কমাতে সাহায্য করে, কার্যকরভাবে attacker এর পক্ষে এটি কঠিন করে তোলে Malicious scripts ইনজেকশন।
- Use of Security-focused libraries and frameworks: কিছু লাইব্রেরি এবং ফ্রেমওয়ার্কের XSS attacker এর বিরুদ্ধে built-in সুরক্ষা রয়েছে। উদাহরণস্বরূপ, AngularJS-এর একটি built-in স্যানিটাইজেশন সার্ভিস রয়েছে যা অটোমেটিক্যালি কোনও সম্ভাব্য বিপজ্জনক কোড এড়িয়ে যায়।
- Regular security testing: নিয়মিতভাবে আপনার ওয়েবসাইটটির vulnerability পরীক্ষা করুন, যেমন XSS, automated tool বা manual penetration টেস্ট করে।
এটা মনে রাখা গুরুত্বপূর্ণ যে XSS attack প্রতিরোধ একটি অনগোয়িং প্রসেস যার জন্য ক্রমাগত মনোযোগ এবং নতুন attack এর টেকনিক তৈরি হওয়ার সাথে সাথে আপডেট করা প্রয়োজন।
good