CSRF (Cross-Site Request Forgery) একটি সিকিউরিটি আক্রমণ, যা আক্রমণকারী ব্যবহারকারীর পক্ষে অননুমোদিত ক্রিয়া সম্পাদন করার জন্য ডিজাইন করা হয়। এই আক্রমণটি তখন ঘটে যখন একটি বিশ্বাসযোগ্য ব্যবহারকারী একটি ওয়েবসাইটে লগ ইন থাকে এবং আক্রমণকারী সেই ব্যবহারকারীর সেশন ব্যবহার করে একটি ম্যালিশিয়াস রিকোয়েস্ট পাঠায়, যা সাইটের পক্ষ থেকে এক্সিকিউট করা হয়। এর মাধ্যমে আক্রমণকারী সেই ব্যবহারকারীর অনুমতি ছাড়াই কোনো ক্রিয়া সম্পাদন করতে পারে, যেমন: পাসওয়ার্ড পরিবর্তন, ফান্ড ট্রান্সফার, ইত্যাদি।
ASP.Net MVC-তে CSRF আক্রমণ প্রতিরোধের জন্য বেশ কিছু পদ্ধতি রয়েছে। এর মধ্যে প্রধান একটি পদ্ধতি হচ্ছে Anti-Forgery Tokens ব্যবহার করা। এই টোকেনটি ওয়েব ফর্মে একটি লুকানো ফিল্ড হিসেবে যুক্ত থাকে, যা প্রতিটি সাবমিশনের সময় সার্ভারে যাচাই করা হয়।
এটি ব্যবহারকারীকে কিছু না জানিয়ে ক্ষতি করতে পারে, যেমন: পাসওয়ার্ড পরিবর্তন, ফান্ড ট্রান্সফার ইত্যাদি।
ASP.Net MVC-তে Anti-Forgery Token ব্যবহার করা CSRF আক্রমণ প্রতিরোধের সবচেয়ে জনপ্রিয় পদ্ধতি। এটি নিশ্চিত করে যে ফর্মটি কেবলমাত্র সেই ব্যবহারকারী থেকে পাঠানো হয়েছে, যার সেশন বৈধ।
ASP.Net MVC-তে Anti-Forgery Token প্রক্রিয়া ব্যবহার করার জন্য নিচে কিছু পদক্ষেপ দেওয়া হলো:
@Html.AntiForgeryToken()
ফর্মে টোকেন যুক্ত করাপ্রথমে আপনার ফর্মের মধ্যে @Html.AntiForgeryToken()
ট্যাগটি অন্তর্ভুক্ত করতে হবে, যা সঠিক Anti-Forgery Token তৈরি করবে এবং তা ফর্মে ইনক্লুড করবে।
@using (Html.BeginForm())
{
@Html.AntiForgeryToken() <!-- Anti-Forgery Token -->
<label for="username">Username:</label>
<input type="text" id="username" name="username" />
<label for="password">Password:</label>
<input type="password" id="password" name="password" />
<button type="submit">Submit</button>
}
[ValidateAntiForgeryToken]
অ্যাট্রিবিউট ব্যবহার করাএখন কন্ট্রোলারের অ্যাকশন মেথডে [ValidateAntiForgeryToken]
অ্যাট্রিবিউট যোগ করতে হবে, যা টোকেনের বৈধতা যাচাই করবে।
[HttpPost]
[ValidateAntiForgeryToken] // Validate Anti-Forgery Token
public ActionResult Login(LoginViewModel model)
{
if (ModelState.IsValid)
{
// Do login logic here
return RedirectToAction("Dashboard");
}
return View(model);
}
এইভাবে, ASP.Net MVC কন্ট্রোলার এবং ভিউ-এর মধ্যে Anti-Forgery Token ব্যবহার করে আপনি CSRF আক্রমণ প্রতিরোধ করতে পারেন। যখন ফর্মটি সাবমিট করা হবে, তখন সার্ভার তা যাচাই করবে এবং যদি টোকেনের মান সঠিক না হয়, তাহলে রিকোয়েস্টটি অগ্রাহ্য করা হবে।
যদি আপনার অ্যাপ্লিকেশন Ajax ব্যবহার করে ফর্ম সাবমিট বা HTTP রিকোয়েস্ট পাঠায়, তবে আপনাকে Ajax রিকোয়েস্টে Anti-Forgery Token পাঠাতে হবে।
// Add Anti-Forgery Token to the header for Ajax requests
$(function () {
var token = $('input[name="__RequestVerificationToken"]').val();
$.ajaxSetup({
beforeSend: function (xhr) {
xhr.setRequestHeader('RequestVerificationToken', token);
}
});
});
এতে করে, Ajax রিকোয়েস্টের সঙ্গে Anti-Forgery Token সার্ভারে প্রেরণ করা হবে এবং সার্ভার সেটি যাচাই করতে পারবে।
CSRF আক্রমণ থেকে রক্ষা পেতে, SameSite কুকি সেটিংস ব্যবহার করা গুরুত্বপূর্ণ। SameSite কুকি প্রোপার্টি সেট করে আপনি কুকি অ্যাক্সেস কন্ট্রোল করতে পারবেন। এর মাধ্যমে, আপনি কুকি কেবলমাত্র সেই ডোমেইনের জন্য পাঠাতে পারবেন যেখানে সেটি তৈরি হয়েছিল।
services.ConfigureApplicationCookie(options =>
{
options.Cookie.SameSite = SameSiteMode.Strict; // Only send cookies for same-site requests
});
CSRF (Cross-Site Request Forgery) আক্রমণ ব্যবহারকারীর অননুমোদিত ক্রিয়াগুলোর মাধ্যমে অ্যাপ্লিকেশনে নিরাপত্তা ঝুঁকি তৈরি করতে পারে। ASP.Net MVC-তে Anti-Forgery Tokens ব্যবহার করে এবং সঠিকভাবে [ValidateAntiForgeryToken] অ্যাট্রিবিউট প্রয়োগ করে এই ধরনের আক্রমণ প্রতিরোধ করা যায়। এছাড়া SameSite কুকি পলিসি ব্যবহার করে কুকির মাধ্যমে CSRF আক্রমণ আরও প্রতিরোধ করা সম্ভব। এই সিকিউরিটি ব্যবস্থা গুলি ASP.Net অ্যাপ্লিকেশনের নিরাপত্তা বাড়াতে গুরুত্বপূর্ণ ভূমিকা পালন করে।
common.read_more