আমি ইন্টারনেটে কয়েকটি ব্লগ পোস্টে যে তথ্যগুলি পড়েছি তার পরে আমি সিএসআরএফ আক্রমণগুলিকে প্রশমিত করার জন্য আমার অ্যাপ্লিকেশনটিতে প্রয়োগ করেছি । বিশেষত এই পোস্টগুলি আমার বাস্তবায়নের ড্রাইভার হয়েছে
- এএসপি.এনইটি এবং ওয়েব সরঞ্জাম বিকাশকারী সামগ্রী দল থেকে এএসপি.নেট এমভিসির জন্য সেরা অনুশীলন
- ফিল হ্যাক ব্লগ থেকে ক্রস-সাইটের অনুরোধ জালিয়াতি আক্রমণ এর অ্যানাটমি
- এএসপি.নেট এমভিসি ফ্রেমওয়ার্কে অ্যান্টিফর্জিটোকেন - এইচটিএমএল.আন্টিফোরজিটোকেন এবং ডেভিড হেডেন ব্লগের বৈধতা
মূলত এই নিবন্ধগুলি এবং প্রস্তাবনাগুলি বলে যে সিএসআরএফ আক্রমণ প্রতিরোধ করার জন্য যে কোনও ব্যক্তিকে নিম্নলিখিত কোডটি প্রয়োগ করতে হবে:
1) [ValidateAntiForgeryToken]
পোষ্ট এইচটিটিপি ক্রিয়া গ্রহণ করে এমন প্রতিটি ক্রিয়া যুক্ত করুন
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult SomeAction( SomeModel model ) {
}
2) <%= Html.AntiForgeryToken() %>
সার্ভারে ডেটা জমা দেয় এমন ফর্মগুলির ভিতরে সহায়কটি যুক্ত করুন
<div style="text-align:right; padding: 8px;">
<%= Html.AntiForgeryToken() %>
<input type="submit" id="btnSave" value="Save" />
</div>
যাইহোক আমার অ্যাপ্লিকেশনের কিছু অংশে আমি কোনও ফর্ম না রেখে সার্ভারে jQuery সহ আজাক্স পোস্ট করছি। এটি ঘটে উদাহরণস্বরূপ যেখানে আমি ব্যবহারকারীকে একটি নির্দিষ্ট ক্রিয়া করতে কোনও চিত্রটিতে ক্লিক করতে দিচ্ছি।
ধরুন আমার কাছে ক্রিয়াকলাপের তালিকা সহ একটি টেবিল রয়েছে। আমার টেবিলের একটি কলামে একটি চিত্র রয়েছে যা "ক্রিয়াকলাপটি সম্পূর্ণ হয়েছে হিসাবে চিহ্নিত করুন" এবং যখন ব্যবহারকারী সেই ক্রিয়াকলাপটিতে ক্লিক করেন আমি নীচের নমুনার মতো আজাক্স পোস্ট করছি:
$("a.markAsDone").click(function (event) {
event.preventDefault();
$.ajax({
type: "post",
dataType: "html",
url: $(this).attr("rel"),
data: {},
success: function (response) {
// ....
}
});
});
<%= Html.AntiForgeryToken() %>
এই ক্ষেত্রে আমি কীভাবে এটি ব্যবহার করতে পারি ? আমি কি আজাক্স কলের ডেটা প্যারামিটারের ভিতরে সহায়ক কল অন্তর্ভুক্ত করব?
দীর্ঘ পোস্টের জন্য দুঃখিত এবং সাহায্য করার জন্য অনেক ধন্যবাদ
সম্পাদনা :
অনুযায়ী jayrdub উত্তর আমি নিম্নলিখিত ভাবে ব্যবহার করেছেন
$("a.markAsDone").click(function (event) {
event.preventDefault();
$.ajax({
type: "post",
dataType: "html",
url: $(this).attr("rel"),
data: {
AddAntiForgeryToken({}),
id: parseInt($(this).attr("title"))
},
success: function (response) {
// ....
}
});
});