CSRF (Cross-Site Request Forgery) একটি সাধারণ নিরাপত্তা ঝুঁকি যেখানে একটি দূষিত সাইট ব্যবহারকারীর অনুমতি ছাড়া তাদের অ্যাকাউন্টে বিভিন্ন অনিচ্ছাকৃত কাজ করতে বাধ্য করে। লারাভেল এই ধরনের আক্রমণ প্রতিরোধের জন্য একটি বিল্ট-ইন সুরক্ষা ব্যবস্থা প্রদান করে, যা CSRF Protection নামে পরিচিত।
লারাভেল স্বয়ংক্রিয়ভাবে সমস্ত POST, PUT, PATCH, এবং DELETE HTTP রিকোয়েস্টের সাথে CSRF টোকেন যাচাই করে, যা নিশ্চিত করে যে রিকোয়েস্টটি আপনার অ্যাপ্লিকেশন থেকে এসেছে। GET রিকোয়েস্টের জন্য এটি প্রয়োজন হয় না, কারণ সেগুলি সাধারণত ডেটা পরিবর্তন করে না।
প্রতিটি HTML ফর্মে CSRF টোকেন যুক্ত করতে হবে, যা লারাভেল সহজেই প্রদান করে। আপনি @csrf
ডিরেক্টিভ ব্যবহার করে এই টোকেনটি ফর্মে যোগ করতে পারেন।
<form method="POST" action="/profile">
@csrf
<!-- ফর্মের অন্যান্য ইনপুট -->
<button type="submit">Submit</button>
</form>
এটি আপনার ফর্মে একটি গোপন ইনপুট ফিল্ড যোগ করবে, যেখানে CSRF টোকেনটি ইনক্লুড থাকবে। লারাভেল এই টোকেনের মাধ্যমে যাচাই করবে যে রিকোয়েস্টটি আপনার অ্যাপ্লিকেশন থেকে এসেছে।
আপনার অ্যাপ্লিকেশনের কিছু নির্দিষ্ট URI-তে CSRF টোকেন যাচাই করতে না চাইলে, সেই URI গুলোকে VerifyCsrfToken
মিডলওয়্যারে বাদ দিতে পারেন। app/Http/Middleware/VerifyCsrfToken.php
ফাইলে except
প্রপার্টির মধ্যে এই URI গুলো উল্লেখ করতে হবে।
protected $except = [
'stripe/*',
'http://example.com/payments/*',
];
এখানে stripe/*
এবং payments/*
URI গুলো CSRF যাচাই থেকে বাদ দেওয়া হয়েছে।
কিছু সময় আপনি JavaScript ব্যবহার করে AJAX রিকোয়েস্ট করতে পারেন। এর জন্য, লারাভেল আপনাকে CSRF টোকেন X-CSRF-Token
হেডার হিসেবে পাঠানোর সুযোগ দেয়।
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
এখানে টোকেনটি meta
ট্যাগ থেকে নিয়ে AJAX রিকোয়েস্টের সাথে হেডারে পাঠানো হয়েছে।
যদি আপনি XHR বা JavaScript ফ্রেমওয়ার্ক যেমন Vue বা Angular ব্যবহার করেন, তাহলে লারাভেল X-XSRF-Token
কুকি ব্যবহার করে সুরক্ষা প্রদান করতে পারে। লারাভেল এই কুকিটি স্বয়ংক্রিয়ভাবে সঠিকভাবে সেট করে, এবং আপনি এই কুকিকে AJAX রিকোয়েস্টে হেডার হিসেবে ব্যবহার করতে পারেন।
axios.defaults.headers.common['X-XSRF-TOKEN'] = getCookie('XSRF-TOKEN');
এখানে XSRF-TOKEN
কুকি থেকে টোকেনটি পড়ে AJAX রিকোয়েস্টের সাথে পাঠানো হয়েছে।
CSRF Protection লারাভেলে একটি অত্যন্ত গুরুত্বপূর্ণ সিকিউরিটি ফিচার, যা আপনার অ্যাপ্লিকেশনকে দূষিত রিকোয়েস্ট থেকে রক্ষা করে। আপনি খুব সহজেই ফর্মে @csrf
ডিরেক্টিভ ব্যবহার করে বা AJAX রিকোয়েস্টে টোকেন পাঠিয়ে এই সুরক্ষা নিশ্চিত করতে পারেন। এছাড়া, নির্দিষ্ট URI গুলোতে প্রয়োজন না হলে CSRF যাচাই বাদ দেয়ারও সুবিধা আছে, যা অ্যাপ্লিকেশনকে আরও ফ্লেক্সিবল করে তোলে।