XSS এবং CSRF প্রতিরোধ

Security Best Practices - ওয়েবজিএল (WebGL) - Web Development

323

XSS (Cross-Site Scripting) কি?

XSS (Cross-Site Scripting) একটি ওয়েব নিরাপত্তা আক্রমণ যেখানে আক্রমণকারী একটি নিরাপদ ওয়েবসাইটে ম্যালিসিয়াস (malicious) স্ক্রিপ্ট ইনজেক্ট করে, যা তখন ব্যবহারকারীদের ব্রাউজারে রান হয়। এই ধরনের আক্রমণ ব্যবহারকারীর সেশনের তথ্য চুরি, ম্যালওয়্যার ডাউনলোড করা, বা ব্যবহারকারীদের অবৈধ কার্যকলাপ করার জন্য ব্যবহার করা হতে পারে। ওয়েবজিএল অ্যাপ্লিকেশনেও XSS আক্রমণ হতে পারে যদি কোড নিরাপত্তার দিক থেকে দুর্বল হয় এবং ব্যবহারকারীর ইনপুট সঠিকভাবে যাচাই করা না হয়।


CSRF (Cross-Site Request Forgery) কি?

CSRF (Cross-Site Request Forgery) হলো একটি আক্রমণ যেখানে আক্রমণকারী একটি বৈধ ব্যবহারকারীর হয়ে একটি অনুরোধ (request) পাঠায়, যাতে ওয়েব অ্যাপ্লিকেশনে অনুমোদিত কাজ সংঘটিত হয়। উদাহরণস্বরূপ, আক্রমণকারী একটি ব্যবহৃত ওয়েবসাইটে লগ ইন থাকা অবস্থায় ব্যবহারকারীর অজান্তে একটি ম্যালিসিয়াস অনুরোধ পাঠাতে পারে যা অচেতনভাবে কার্যকর হয়, যেমন টাকা স্থানান্তর বা অ্যাকাউন্ট সেটিং পরিবর্তন। ওয়েবজিএল অ্যাপ্লিকেশনগুলো যেখানে ইউজার ইনপুট এবং ব্রাউজারের কুকি ব্যবহৃত হয়, সেখানে CSRF আক্রমণ হতে পারে।


XSS এবং CSRF প্রতিরোধ কিভাবে করবেন?

ওয়েবজিএল অ্যাপ্লিকেশনগুলিতে XSS এবং CSRF আক্রমণ প্রতিরোধ করতে কিছু কার্যকরী উপায় অবলম্বন করা যেতে পারে:


XSS প্রতিরোধের কৌশল

1. ইনপুট ভ্যালিডেশন এবং স্যানিটাইজেশন

ব্যবহারকারীর ইনপুট সবসময় ভ্যালিডেট ও স্যানিটাইজ করা উচিত। এটি নিশ্চিত করে যে, ব্যবহারকারীরা যেকোনো ধরনের ম্যালিসিয়াস স্ক্রিপ্ট বা HTML ইনপুট করতে না পারে। JavaScript, HTML, বা CSS ইনপুট থেকে স্ক্রিপ্টের উপস্থিতি সরিয়ে ফেলতে ফাংশন ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, DOMPurify লাইব্রেরি ব্যবহার করা যেতে পারে।

var cleanInput = DOMPurify.sanitize(userInput);

2. কনটেন্ট সিকিউরিটি পলিসি (CSP)

CSP (Content Security Policy) একটি নিরাপত্তা বৈশিষ্ট্য যা XSS আক্রমণ সীমিত করতে পারে। এটি ব্রাউজারকে নির্দেশ দেয় যে কোন স্ক্রিপ্টগুলি বৈধ এবং চালানো যেতে পারে। CSP হেডার যুক্ত করে, আপনি ইনলাইন স্ক্রিপ্ট নিষিদ্ধ করতে পারেন এবং শুধুমাত্র নির্দিষ্ট উৎস থেকে স্ক্রিপ্টগুলি লোড করার অনুমতি দিতে পারেন।

Content-Security-Policy: default-src 'self'; script-src 'self' https://trustedscripts.example.com;

3. এস্ট্রাক্টিভ ইনপুট এবং আউটপুট

সব সময় HTML, JavaScript, CSS বা URL-এর মাধ্যমে ইনপুট ব্যবহার করার সময়, সেগুলোকে আউটপুট করার আগে যথাযথভাবে এসকেপ (escape) করুন। এটি এমন স্ক্রিপ্টগুলির কার্যকারিতা নিষ্ক্রিয় করে দেবে যা ম্যালওয়্যার বা XSS আক্রমণের অংশ হতে পারে।

var userName = document.createTextNode(inputData); 
document.getElementById("usernameDisplay").appendChild(userName);

4. কুকি সিকিউরিটি

যতটুকু সম্ভব, HttpOnly এবং Secure কুকি ফ্ল্যাগ ব্যবহার করুন। HttpOnly ফ্ল্যাগ কুকির অ্যাক্সেস JavaScript-এর মাধ্যমে সীমাবদ্ধ করে, আর Secure ফ্ল্যাগ কুকি শুধুমাত্র HTTPS সংযোগের মাধ্যমে পাঠানোর অনুমতি দেয়।

Set-Cookie: sessionId=abc123; HttpOnly; Secure; SameSite=Strict;

CSRF প্রতিরোধের কৌশল

1. CSRF টোকেন ব্যবহার

CSRF আক্রমণ প্রতিরোধে সবচেয়ে কার্যকর পদ্ধতি হলো CSRF টোকেন ব্যবহার করা। একটি অনন্য টোকেন ব্যবহারকারী প্রতিটি অনুরোধের সাথে যুক্ত করা হয়, যা সঠিকভাবে যাচাই করা হয়। সার্ভার একটি র্যান্ডম টোকেন প্রদান করে এবং সেই টোকেনটি প্রতিটি সাবমিট করা ফর্মের সাথে পাঠানো হয়।

<input type="hidden" name="csrf_token" value="random_generated_token">

এবং সিলেক্ট করা টোকেন সার্ভারে যাচাই করা হয়। শুধুমাত্র সঠিক টোকেন হলে, অনুরোধটি অনুমোদিত হয়।

2. SameSite কুকি পলিসি

SameSite কুকি পলিসি CSRF আক্রমণ রোধে গুরুত্বপূর্ণ ভূমিকা পালন করে। এটি নিশ্চিত করে যে, কুকি শুধুমাত্র সেই ডোমেইনের জন্য পাঠানো হয় যেখান থেকে অনুরোধ এসেছে, এবং এটি ক্রস-সাইট অনুরোধে কুকি পাঠানো নিষিদ্ধ করে।

Set-Cookie: sessionId=abc123; SameSite=Strict;

3. কুকি বা স্টেটফুল সেশন ব্যবহার করবেন না

যদি আপনি প্যারামিটার হিসেবে কুকি বা স্টেটফুল সেশন ব্যবহার করেন, তবে এগুলোর মাধ্যমে CSRF আক্রমণ হতে পারে। তাই এ ধরনের পদ্ধতিগুলো সীমিত করতে হবে এবং শুধুমাত্র নিরাপদ টোকেন বা JWT (JSON Web Tokens) ব্যবহার করা যেতে পারে, যেগুলো সঠিকভাবে যাচাই করা হয়।

4. ফর্ম সাবমিশন ইভেন্ট যাচাই

ফর্ম সাবমিশন বা AJAX অনুরোধের ক্ষেত্রে, সার্ভারে নিশ্চিত করুন যে প্রাপ্ত ফর্মটি প্রকৃত ব্যবহারকারীর দিক থেকে এসেছে এবং এটি কোনো ম্যালিসিয়াস স্ক্রিপ্ট দ্বারা তৈরি হয়নি।

fetch('/submit', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-CSRF-Token': csrfToken  // CSRF টোকেন পাঠানো
  },
  body: JSON.stringify(data)
});

XSS এবং CSRF প্রতিরোধের সারাংশ

  • XSS (Cross-Site Scripting) এবং CSRF (Cross-Site Request Forgery) ওয়েব নিরাপত্তায় গুরুতর সমস্যা তৈরি করতে পারে। তবে সঠিক নিরাপত্তা ব্যবস্থা গ্রহণের মাধ্যমে, যেমন ইনপুট স্যানিটাইজেশন, CSP পলিসি, CSRF টোকেন, এবং কুকি নিরাপত্তা, এই ধরনের আক্রমণ প্রতিরোধ করা সম্ভব।
  • ওয়েবজিএল অ্যাপ্লিকেশনে, যেখানে ব্যবহারকারীর ইনপুট সরাসরি গ্রাফিক্স বা ডেটার সাথে যুক্ত হতে পারে, সেখানেও এসব নিরাপত্তা ব্যবস্থা গ্রহণ করে আক্রমণগুলো প্রতিরোধ করা জরুরি।
Content added By
Promotion

Are you sure to start over?

Loading...