ValidateAntiForgeryToken উদ্দেশ্য, ব্যাখ্যা এবং উদাহরণ


310

আপনি কী ভ্যালিডএন্টিফুরিরি টোকেন উদ্দেশ্যটি ব্যাখ্যা করতে ValidateAntiForgeryTokenএবং এমভিসি 4 তে আমাকে উদাহরণ দেখিয়ে দিতে পারেন ?

এই বৈশিষ্ট্যটি ব্যাখ্যা করে এমন কোনও উদাহরণ আমি পাই না?


8
এই পোস্টটি পরীক্ষা করুন خر্রাপরোট.ব্লগ
আরচিভ /

1
যাইহোক, আমি সত্যিই বুঝতে পারি না কেন এমএস কেন এই সহায়তার ভিতরে এই অধিকার স্থাপন করা সম্ভব করে নি .BeginForm। সুতরাং এই জিনিসটি স্বয়ংক্রিয়ভাবে রয়েছে, যেমন রেলের মতো
জাজকাট

উত্তর:


350

এমভিসি'র অ্যান্টি-ফোরজি সমর্থনটি এইচটিটিপি-কেবল কুকিতে একটি অনন্য মান লিখে এবং তারপরে একই মানটি ফর্মটিতে লেখা হয়। পৃষ্ঠাটি জমা দেওয়া হলে, কুকি মান ফর্ম মানের সাথে মেলে না, তবে একটি ত্রুটি উত্থাপিত হয়।

এটি লক্ষণীয় গুরুত্বপূর্ণ যে বৈশিষ্ট্যটি ক্রস সাইট অনুরোধ জালিয়াতিগুলি প্রতিরোধ করে । এটি হ'ল অন্য সাইট থেকে এমন একটি ফর্ম যা প্রমাণীকরণকারীর ব্যবহারকারীর শংসাপত্রগুলি ব্যবহার করে লুকানো সামগ্রী জমা দেওয়ার প্রয়াসে আপনার সাইটে পোস্ট করে। আক্রমণটিতে লগ ইন করা ব্যবহারকারীদের একটি ফর্ম জমা দেওয়ার জন্য, বা পৃষ্ঠাটি লোড হওয়ার পরে প্রোগ্রামগতভাবে কোনও ফর্মটি ট্রিগার করার সাথে জড়িত।

বৈশিষ্ট্যটি অন্য কোনও ধরণের ডেটা জালিয়াতি বা ছলচাতুরি ভিত্তিক আক্রমণগুলিকে আটকাবে না।

এটি ব্যবহার করতে, ValidateAntiForgeryTokenঅ্যাট্রিবিউটটি সহ অ্যাকশন পদ্ধতি বা নিয়ামককে সজ্জিত করুন @Html.AntiForgeryToken()এবং পদ্ধতিটিতে পোস্ট ফর্মগুলিতে একটি কল করুন ।


5
@ ক্রিস এটি উভয়ই আমার উত্তর অনুসারে: "এইচটিটিপি-কেবলমাত্র কুকিতে একটি অনন্য মূল্য লিখেছে এবং তারপরে একই মানটি ফর্মটিতে লিখিত হবে "
রিচার্ড জাজাল

21
কেন এই ডিফল্ট হিসাবে সেট করা হয় না?
ক্রিশ্চান হেইগলিড

12
@ ক্রিশ্চিয়ান কারণ এটি রেলগুলিতে রুবি নয়। ;-)
মার্টিন ক্যাপোডিসি

6
দেখে মনে হচ্ছে যে ফর্ম __RecquestVerificationsToken এবং কুকি __RecquestVerificationsToken এক নয়, তারা জুটি হিসাবে কাজ করে।
ওয়াইকিট কুং

5
@ আরদানস মোটেও নয়, সিওআরএস এবং সিএসআরএফ সম্পূর্ণ আলাদা। সিওআরএস আপনার সার্ভারে অন্য ডোমেনগুলিকে এপিআইগুলিতে অ্যাক্সেস করার অনুমতি দেওয়ার জন্য, সিএসআরএফ এটি নিশ্চিত করার বিষয়ে যে কোনও ফর্ম পোস্ট যে পৃষ্ঠায় আপনি প্রত্যাশা করেছিলেন তা এসেছে।
রিচার্ড জাজলে

52

ভ্যালিডএন্টিফুরিরি টোকেন অ্যাট্রিবিউটের মূল উদ্দেশ্য হ'ল ক্রস-সাইট অনুরোধ জালিয়াতির আক্রমণ প্রতিরোধ করা।

একটি ক্রস-সাইট অনুরোধ জালিয়াতি একটি আক্রমণ যা একটি বিশ্বস্ত ব্যবহারকারীর ব্রাউজার থেকে একটি ক্ষতিকারক স্ক্রিপ্ট উপাদান, দূষিত কমান্ড, বা কোড প্রেরণ করা হয়। এ সম্পর্কিত আরও তথ্যের জন্য দয়া করে http://www.asp.net/mvc/overview/security/xsrfcsrf-prevention-in-aspnet-mvc-and-web-pages দেখুন

এটি ব্যবহার করা সহজ, আপনার নীচের মতো ভ্যালিডএন্টিফোরজিটোকেন বৈশিষ্ট্য সহ পদ্ধতিটি সাজাতে হবে:

[HttpPost]  
[ValidateAntiForgeryToken]  
public ActionResult CreateProduct(Product product)  
{
  if (ModelState.IsValid)  
  {
    //your logic 
  }
  return View(ModelName);
}

এটি System.Web.Mvc নেমস্পেস থেকে প্রাপ্ত।

এবং আপনার দৃষ্টিতে টোকেন যুক্ত করতে এই কোডটি যুক্ত করুন যাতে এটি জমা দেওয়ার পরে ফর্মটি বৈধতা দেওয়ার জন্য ব্যবহৃত হয়।

@Html.AntiForgeryToken()

হ্যাঁ আপনি ঠিক বলেছেন, আপনাকে আপনার ফর্ম থেকে @ এইচটিএমএল.আন্টিফোর্জিটোকেন () কল করতে হবে এবং আপনি যে ক্রিয়াকলাপটি সুরক্ষিত করতে চান তাতে ValidateAntiForgeryTokenAtribute যুক্ত করতে হবে।
চন্দ্র মল্ল

উত্তরটি বোঝার জন্য এই
সাধারণটির

4

এএসপি.নেটে কোর এন্টি ফোরজি টোকেনটি স্বয়ংক্রিয়ভাবে ফর্মগুলিতে যুক্ত হয়, সুতরাং আপনি @Html.AntiForgeryToken()যদি রেজার ফর্ম উপাদান ব্যবহার করেন বা আপনি যদি আইএইচটিএমএলহেল্পার.বাগিনফর্ম ব্যবহার করেন এবং ফর্মটির পদ্ধতিটি জেট না থাকে তবে আপনাকে যুক্ত করার দরকার নেই।

এটি এর অনুরূপ আপনার ফর্মের জন্য ইনপুট উপাদান তৈরি করবে: <input name="__RequestVerificationToken" type="hidden" value="CfDJ8HSQ_cdnkvBPo-jales205VCq9ISkg9BilG0VXAiNm3Fl5Lyu_JGpQDA4_CLNvty28w43AL8zjeR86fNALdsR3queTfAogif9ut-Zd-fwo8SAYuT0wmZ5eZUYClvpLfYm4LLIVy6VllbD54UxJ8W6FA">

এবং যখন ব্যবহারকারী জমা দেয় তখন এই টোকেনটি বৈধতা সক্ষম থাকলে তা সার্ভারের পাশে যাচাই করা হয়।

[ValidateAntiForgeryToken]অ্যাট্রিবিউট ক্রিয়া বিরুদ্ধে ব্যবহার করা যেতে পারে। এই ফিল্টারটি প্রয়োগ রয়েছে এমন ক্রিয়াকলাপগুলিতে করা অনুরোধগুলি অবরুদ্ধ করা হয় যদি না এই অনুরোধটিতে একটি বৈধ অ্যান্টিফোর্জি টোকেন না থাকে।

[AutoValidateAntiforgeryToken]বৈশিষ্ট্যগুলি নিয়ন্ত্রণকারীদের বিরুদ্ধে ব্যবহার করা যেতে পারে। এই বৈশিষ্ট্যটি বৈধতাআন্তিফৌজরি টোকেন অ্যাট্রিবিউটের সাথে একইভাবে কাজ করে, ব্যতীত নিম্নলিখিত HTTP পদ্ধতি ব্যবহার করে অনুরোধগুলির জন্য টোকেনের প্রয়োজন হয় না: GET HEAD OPTIONS TRACE

অতিরিক্ত তথ্য: https://docs.microsoft.com/pl-pl/aspnet/core/security/anti-request-forgery


2

মাইক্রোসফ্ট আমাদের অন্তর্নির্মিত কার্যকারিতা সরবরাহ করে যা আমরা সুরক্ষার উদ্দেশ্যে আমাদের অ্যাপ্লিকেশনটিতে ব্যবহার করি, সুতরাং কেউ আমাদের সাইট হ্যাক করতে পারে না বা কিছু সমালোচনামূলক তথ্য আক্রমণ করতে পারে না।

হরপ্রীত সিংয়ের এমভিসি আবেদনের মধ্যে বৈধতা অ্যান্টিফোর্ডারি টোকেনের উদ্দেশ্য থেকে :

ভ্যালিডএন্টিফুরিরি টোকেন ব্যবহার করুন

আসুন এই ধারণাটি বোঝার জন্য একটি সাধারণ উদাহরণ দিয়ে চেষ্টা করুন। আমি এটিকে খুব জটিল করে তুলতে চাই না, এজন্য আমি এমভিসি অ্যাপ্লিকেশনটির একটি টেম্পলেট ব্যবহার করতে যাচ্ছি, ভিজ্যুয়াল স্টুডিওতে ইতিমধ্যে উপলব্ধ। আমরা পদক্ষেপে এই পদক্ষেপ করব। চল শুরু করি.

  1. পদক্ষেপ 1 - ডিফল্ট ইন্টারনেট টেম্পলেট সহ দুটি এমভিসি অ্যাপ্লিকেশন তৈরি করুন এবং যথাক্রমে ক্রসসাইট_সেকুয়েস্টফৌজরি এবং অ্যাটাক_এপ্লিকেশন হিসাবে সেই নামগুলি দিন।

  2. এখন, ক্রসসাইট_উইকুয়েস্টফৌজরি অ্যাপ্লিকেশনটির ওয়েব কনফিগারেশনটি খুলুন এবং নীচের সাথে সংযোগের স্ট্রিংটি পরিবর্তন করুন এবং তারপরে সেভ করুন।

`

<connectionStrings> <add name="DefaultConnection" connectionString="Data Source=local\SQLEXPRESS;Initial Catalog=CSRF;
Integrated Security=true;" providerName="System.Data.SqlClient" /> 
 </connectionStrings>
  1. এখন, সরঞ্জাম >> নিউগেট প্যাকেজ ম্যানেজার, তারপরে প্যাকেজ ম্যানেজার কনসোলে ক্লিক করুন

  2. এখন, ডাটাবেস তৈরি করতে প্যাকেজ ম্যানেজার কনসোলে নীচে উল্লিখিত তিনটি কমান্ড চালান।

সক্ষম-স্থানান্তর অ্যাড-মাইগ্রেশন প্রথম আপডেট-ডাটাবেস

গুরুত্বপূর্ণ নোট - আমি কোডটি প্রথম পদ্ধতির সাহায্যে ডেটাবেস তৈরি করেছি কারণ বিকাশকারীরা যেভাবে কাজ করেন আমি এই উদাহরণটি তৈরি করতে চাই। আপনি ম্যানুয়ালিও ডাটাবেস তৈরি করতে পারেন। এটা তোমার পছন্দ.

  1. এখন, অ্যাকাউন্ট কন্ট্রোলার খুলুন। এখানে, আপনি একটি রেজিস্টার পদ্ধতি দেখতে পাবেন যার প্রকারের পোস্ট। এই পদ্ধতির উপরে, [ValidateAntiForgeryToken] হিসাবে একটি বৈশিষ্ট্য উপলব্ধ থাকতে হবে। এই গুণটি মন্তব্য করুন। এখন, রেজিস্টারে রাইট ক্লিক করুন এবং ভিউতে ক্লিক করুন। সেখানে আবার, আপনি @ এইচটিএমএল হিসাবে একটি এইচটিএমএল সহায়ক পাবেন। এটি একটি মন্তব্য। অ্যাপ্লিকেশন চালান এবং রেজিস্টার বোতামে ক্লিক করুন। URL টি খোলা থাকবে:

HTTP: // স্থানীয় হোস্ট: 52269 / অ্যাকাউন্ট / নিবন্ধন

নোটস - আমি জানি এখন সমস্ত পাঠকের মনে প্রশ্ন উত্থাপিত হচ্ছে কেন এই দুটি সহায়ককে মন্তব্য করা দরকার কেননা সবাই জানেন যে এইগুলি অনুরোধ যাচাই করার জন্য ব্যবহৃত হয়। তারপরে, আমি আপনাকে সকলকে জানাতে চাই যে এটি কেবল এই কারণগুলির সাহায্যকারীদের প্রয়োগ করার আগে এবং তার আগে পার্থক্যটি দেখাতে চাই is

  1. এখন, দ্বিতীয় অ্যাপ্লিকেশনটি খুলুন যা Attack_Application। তারপরে অ্যাকাউন্ট কন্ট্রোলারের রেজিস্টার পদ্ধতিটি খুলুন। নীচে দেখানো সাধারণের সাথে কেবল পোস্টের পদ্ধতিটি পরিবর্তন করুন।

    নিবন্ধন ফর্ম
    1. @ এইচটিএমএল। লেবেলফোর্ড (এম => মি। ইউজারনেম) @ এইচটিএমএল.টেক্সটবক্সফোর (এম => মি। ইউজারনেম)
    2. @ এইচটিএমএল। লেবেলফোর্ড (এম => মি। পাসওয়ার্ড) @ এইচটিএমএল.প্যাসওয়ার্ডফোর্ড (এম => মি। পাসওয়ার্ড)
    3. @ এইচটিএমএল। লেবেলফোর্ড (এম => মি

N. এখন, ধরুন আপনি হ্যাকার এবং আপনি ইউআরএলটি জানেন যেখানে আপনি ক্রসসাইট_উইকুয়েস্টফোরজির অ্যাপ্লিকেশনটিতে ব্যবহারকারীকে নিবন্ধভুক্ত করতে পারেন। এখন, আপনি অ্যাটাকার_ অ্যাপ্লিকেশন হিসাবে একটি ফোরজি সাইট তৈরি করেছেন এবং পোস্ট URL এ একই URL টি রেখেছেন।

৮.এই অ্যাপ্লিকেশনটি এখনই চালান এবং রেজিস্টার ক্ষেত্রগুলি পূরণ করুন এবং নিবন্ধকে ক্লিক করুন। আপনি দেখতে পাবেন ক্রসসাইট_উইকুয়েস্টফোররি অ্যাপ্লিকেশনটিতে আপনি নিবন্ধিত হয়েছেন। আপনি যদি ক্রসসাইট_উইকুয়েস্টফৌজরী অ্যাপ্লিকেশনটির ডাটাবেসটি পরীক্ষা করেন তবে আপনি প্রবেশ করেছেন এবং দেখতে প্রবেশ করবেন।

  1. গুরুত্বপূর্ণ - এখন, ক্রসসাইট_উইকুয়েস্টফোনারি অ্যাপ্লিকেশনটি খুলুন এবং অ্যাকাউন্ট কন্ট্রোলারে টোকেন মন্তব্য করুন এবং দেখুনটিকে নিবন্ধ করুন। একই প্রক্রিয়াটি দিয়ে আবার নিবন্ধন করার চেষ্টা করুন। তারপরে, নীচের মতো একটি ত্রুটি ঘটবে।

'/' আপ্লিকেশনে সারভার এরর ________________________________________ প্রয়োজনীয় অ্যান্টি-জালিয়াতি কুকি "__RecquestVerificationsToken" উপস্থিত নেই।

ধারণাটি এটাই বলে। আমরা ভিউতে যা যুক্ত করি অর্থাৎ @ এইচটিএমএল। অ্যান্টিফোর্জিটোকেন () লোডের সময় __RecquestVerificationsToken এবং নিয়ন্ত্রণকারী পদ্ধতিতে উপলব্ধ [ValidateAntiForgeryToken] উত্পন্ন করে। পোস্ট টকে এই টোকেনটি মিলান। যদি টোকেন একই হয় তবে এর অর্থ এটি একটি বৈধ অনুরোধ।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.