Cross-Site Scripting (XSS) এবং Cross-Site Request Forgery (CSRF) কি?
Cross-Site Scripting (XSS) এবং Cross-Site Request Forgery (CSRF) হল দুটি প্রধান ওয়েব অ্যাপ্লিকেশন সিকিউরিটি সমস্যা। এগুলি আক্রমণকারীদের জন্য সুযোগ তৈরি করে, যাতে তারা ব্যবহারকারীর সেশনের মধ্যে দুর্ব্যবহার করতে পারে।
- XSS (Cross-Site Scripting): XSS হল একটি আক্রমণ যেখানে আক্রমণকারী একটি ওয়েব পেজে ম্যালিসিয়াস স্ক্রিপ্ট ইনজেক্ট করে, যা পরে ব্যবহারকারীর ব্রাউজারে রান হয় এবং তাদের তথ্য চুরি করতে পারে বা অ্যাপ্লিকেশনের ডেটা পরিবর্তন করতে পারে।
- CSRF (Cross-Site Request Forgery): CSRF হল একটি আক্রমণ যেখানে আক্রমণকারী ব্যবহারকারীর অনুমতি ছাড়াই তাদের ব্রাউজারের মাধ্যমে ম্যালিসিয়াস রিকোয়েস্ট পাঠায়। এটি সাধারণত এমন পরিস্থিতিতে ঘটে যখন ব্যবহারকারী ইতিমধ্যে লগিন অবস্থায় থাকে এবং আক্রমণকারী সেই ব্যবহারকারীর সেশনের মাধ্যমে অপারেশন করে।
Sencha Touch, যা একটি আধুনিক মোবাইল ওয়েব অ্যাপ্লিকেশন ফ্রেমওয়ার্ক, এই ধরনের আক্রমণ থেকে সুরক্ষা নিশ্চিত করতে বিভিন্ন সিকিউরিটি পদ্ধতি প্রদান করে। এখানে আমরা XSS এবং CSRF থেকে সুরক্ষার জন্য Sencha Touch-এ কিছু টিপস এবং সেরা অনুশীলন আলোচনা করব।
Cross-Site Scripting (XSS) থেকে সুরক্ষা
XSS আক্রমণ থেকে সুরক্ষা নিশ্চিত করার জন্য Sencha Touch কিছু কার্যকরী পদ্ধতি প্রদান করে:
১. ইনপুট ভ্যালিডেশন এবং স্যানিটাইজেশন
XSS আক্রমণের অন্যতম কারণ হল অশুদ্ধ বা ম্যালিসিয়াস ইনপুট গ্রহণ। Sencha Touch ব্যবহার করার সময়, সব ইনপুট ভ্যালিডেশন করা উচিত এবং ইনপুট স্যানিটাইজ করতে হবে। HTML, JavaScript বা CSS ইনজেকশনের মাধ্যমে আক্রমণকারীরা স্ক্রিপ্ট ইনজেক্ট করতে পারে। তাই:
- ইনপুট ভ্যালিডেশন: সমস্ত ইউজার ইনপুট যাচাই করা উচিত।
- ইনপুট স্যানিটাইজেশন: যেসব ইনপুট HTML বা JavaScript কোড অন্তর্ভুক্ত করতে পারে, সেগুলো স্যানিটাইজ করুন।
উদাহরণ:
var input = "<script>alert('XSS');</script>";
var sanitizedInput = input.replace(/</g, "<").replace(/>/g, ">");
এখানে, replace() মেথড ব্যবহার করে ইনপুট থেকে ম্যালিসিয়াস স্ক্রিপ্ট প্রতিরোধ করা হচ্ছে।
২. Content Security Policy (CSP) ব্যবহার করা
Content Security Policy (CSP) হল একটি নিরাপত্তা বৈশিষ্ট্য যা আপনার ওয়েব অ্যাপ্লিকেশনের জন্য একটি নীতি নির্ধারণ করে যে কী ধরনের কন্টেন্ট লোড করা যেতে পারে এবং কী ধরনের স্ক্রিপ্ট রান করতে দেওয়া যেতে পারে। এটি XSS আক্রমণ প্রতিরোধ করতে কার্যকর।
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'">
এটি শুধুমাত্র একই ডোমেইন থেকে স্ক্রিপ্ট লোড করতে অনুমতি দেবে এবং আক্রমণকারীদের স্ক্রিপ্ট ইনজেকশন প্রতিরোধ করবে।
৩. DOM Manipulation থেকে সাবধানতা
Sencha Touch-এ DOM (Document Object Model) ম্যানিপুলেশন করার সময়, ব্যবহারকারী ইনপুট সরাসরি HTML ডকুমেন্টে যুক্ত না করে, অবশ্যই সাবধানে ইনপুটের নিরাপত্তা নিশ্চিত করতে হবে। সবসময় innerHTML বা innerText ব্যবহার না করে, safeDOM methods ব্যবহার করা উচিত।
Cross-Site Request Forgery (CSRF) থেকে সুরক্ষা
CSRF আক্রমণ থেকে সুরক্ষা নিশ্চিত করার জন্য Sencha Touch এ কিছু সেরা অনুশীলন:
১. Anti-CSRF Tokens ব্যবহার করা
Sencha Touch-এ CSRF আক্রমণ থেকে সুরক্ষা নিশ্চিত করার জন্য, প্রতি ফর্ম সাবমিশনে একটি anti-CSRF token ব্যবহার করতে হবে। এই টোকেনটি ব্যবহারকারীর সেশনের সাথে সম্পর্কিত এবং প্রতিটি HTTP রিকোয়েস্টে পাঠাতে হবে।
যেমন, একটি HTML ফর্মের মধ্যে CSRF টোকেন যুক্ত করা:
<form method="POST" action="/submit">
<input type="hidden" name="csrf_token" value="your_csrf_token_here" />
<input type="submit" value="Submit" />
</form>
এটি নিশ্চিত করে যে ফর্মটি শুধু তখনই সাবমিট হবে যখন টোকেনটি সঠিক হবে, যা আক্রমণকারীদের দ্বারা আবদ্ধ করা সহজ হবে না।
২. SameSite Cookie ব্যবহার করা
Sencha Touch এ ব্যবহারকারীর সেশন এবং authentication cookie গুলি CSRF আক্রমণ থেকে রক্ষা করতে SameSite Cookie নীতি ব্যবহার করা উচিত। এটি নিশ্চিত করে যে শুধুমাত্র একই সাইট থেকে রিকোয়েস্ট গ্রহণ করা হবে, বাহ্যিক সাইট থেকে নয়।
document.cookie = "sessionId=your_session_id; SameSite=Strict";
এটি রিকোয়েস্ট ফায়ারের মাধ্যমে CSRF আক্রমণ প্রতিরোধ করতে সহায়ক।
৩. CORS (Cross-Origin Resource Sharing) কনফিগারেশন
সার্ভার সাইডে CORS কনফিগারেশন ব্যবহার করে আপনি নিশ্চিত করতে পারেন যে শুধুমাত্র নির্দিষ্ট অরিজিন থেকে রিকোয়েস্ট গ্রহণ করা হবে। অন্য অরিজিন থেকে রিকোয়েস্ট করলে তা প্রত্যাখ্যান করা হবে, ফলে CSRF আক্রমণ প্রতিরোধ করা সম্ভব হবে।
app.use(cors({
origin: 'https://your-allowed-origin.com'
}));
৪. JWT (JSON Web Tokens) ব্যবহার করা
CSRF আক্রমণ থেকে সুরক্ষার আরেকটি পদ্ধতি হল JWT (JSON Web Tokens) ব্যবহার করা। এই টোকেনগুলি সাধারণত HTTP হেডারে পাঠানো হয়, ফলে CSRF আক্রমণকারীদের পক্ষে এটি ব্যবহারের কোনো সুযোগ থাকে না।
fetch('/api/submit', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + jwtToken,
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
});
সারাংশ
XSS (Cross-Site Scripting) এবং CSRF (Cross-Site Request Forgery) হল সাধারণ এবং ক্ষতিকর ওয়েব অ্যাপ্লিকেশন আক্রমণ। Sencha Touch-এ এই আক্রমণগুলির থেকে সুরক্ষা নিশ্চিত করার জন্য, আপনাকে কিছু নিরাপত্তা ব্যবস্থা গ্রহণ করতে হবে যেমন:
- XSS থেকে সুরক্ষা: ইনপুট স্যানিটাইজেশন, CSP (Content Security Policy), DOM manipulation নিরাপত্তা।
- CSRF থেকে সুরক্ষা: Anti-CSRF tokens, SameSite Cookies, CORS কনফিগারেশন, JWT ব্যবহার।
এই সব সুরক্ষা ব্যবস্থা Sencha Touch অ্যাপ্লিকেশনে সুরক্ষা নিশ্চিত করতে সাহায্য করবে এবং আক্রমণকারীদের দ্বারা ডেটা চুরি বা অপব্যবহার প্রতিরোধ করবে।
Read more