একটি সিএসআরএফ টোকেন কি? এর গুরুত্ব কী এবং এটি কীভাবে কাজ করে?


628

আমি একটি অ্যাপ্লিকেশন লিখছি (জ্যাঙ্গো, এটি তাই ঘটে) এবং আমি কেবল একটি "সিএসআরএফ টোকেন" কী এবং এটি কীভাবে ডেটা সুরক্ষিত করে তার একটি ধারণা চাই। আপনি যদি সিএসআরএফ টোকেন ব্যবহার না করেন তবে পোস্টের ডেটাটি কি নিরাপদ নয়?


13
ক্রস-সাইট অনুরোধ জালিয়াতিগুলি রোধ করতে এটি সমস্ত ফর্ম জমা এবং পার্শ্ব-প্রতিক্রিয়া URL গুলির মধ্যে একটি গোপন, ব্যবহারকারী-নির্দিষ্ট টোকেন। এখানে আরও তথ্য: en.wikedia.org/wiki/Cross-site_request_forgery
রবার্ট হার্ভে

1
মনে হচ্ছে কোনও প্রশ্ন রক্ষা করা এবং এটি খুব বিস্তৃত হওয়ার জন্য নিষিদ্ধ করার মধ্যে একটি সূক্ষ্ম রেখা রয়েছে : ডি
anton1980

2
থেকে OWASP ক্রস সাইট অনুরোধ জালিয়াতি (CSRF) প্রতিরোধ চিট শিট : " ক্রস সাইট স্ক্রিপ্টিং না প্রয়োজনীয় CSRF জন্য কাজ হয় তবে কোন ক্রস সাইট স্ক্রিপ্টিং দুর্বলতার সব CSRF প্রশমন কৌশল সর্বনাশ ব্যবহার করা যেতে পারে [...]।। এটি কারণ যে কোনও এক্সএসএস পে-লোড কেবলমাত্র কোনও এক্সএমএলএইচটিপিআরকোয়েস্ট ব্যবহার করে সাইটে যে কোনও পৃষ্ঠা পড়তে পারে [...] এটি জরুরি যে জেএসএসএফ প্রতিরক্ষাগুলি
সংঘবদ্ধ

উত্তর:


1497

সহজ কথায় ক্রস-সাইট রিকোয়েস্ট জালিয়াতি (সিএসআরএফ)

  • ধরুন আপনি বর্তমানে আপনার অনলাইন ব্যাংকিংয়ে লগ ইন করেছেন www.mybank.com
  • থেকে একটি মানি ট্রান্সফার ধরে mybank.com(ধারণার দিক থেকে) ফর্ম একটি অনুরোধে ইচ্ছা ফলাফলের http://www.mybank.com/transfer?to=<SomeAccountnumber>;amount=<SomeAmount>। (আপনার অ্যাকাউন্ট নম্বর প্রয়োজন হয় না, কারণ এটি আপনার লগইন দ্বারা প্রণীত))
  • আপনি ভিজিট করেন www.cute-cat-pictures.org, না জেনেও যে এটি দূষিত সাইট।
  • যদি সেই সাইটের মালিক উপরের অনুরোধের ফর্মটি (সহজ!) জানেন এবং সঠিকভাবে অনুমান করেছেন যে আপনি লগ ইন করেছেন mybank.com(কিছুটা ভাগ্যের প্রয়োজন!), তারা তাদের পৃষ্ঠায় একটি অনুরোধ অন্তর্ভুক্ত করতে পারে http://www.mybank.com/transfer?to=123456;amount=10000( 123456তাদের কেম্যান দ্বীপপুঞ্জের অ্যাকাউন্টের সংখ্যাটি কোথায় ? এবং 10000এমন একটি পরিমাণ যা আপনি পূর্বে ভেবেছিলেন আপনি অধিকারী হয়ে আনন্দিত )।
  • আপনি সেই www.cute-cat-pictures.orgপৃষ্ঠাটি পুনরুদ্ধার করেছেন , সুতরাং আপনার ব্রাউজারটি সেই অনুরোধ জানাবে।
  • আপনার ব্যাংক এই অনুরোধের মূলটি সনাক্ত করতে পারে না: আপনার ওয়েব ব্রাউজারটি আপনার www.mybank.comকুকির পাশাপাশি অনুরোধটি প্রেরণ করবে এবং এটি পুরোপুরি বৈধ বলে মনে হবে। আপনার টাকা আছে!

এটি সিএসআরএফ টোকেনবিহীন বিশ্ব ।

এখন সিএসআরএফ টোকেন সহ আরও ভালটির জন্য :

  • স্থানান্তর অনুরোধে কোনো তৃতীয় যুক্তি দিয়ে বাড়ানো হয়: http://www.mybank.com/transfer?to=123456;amount=10000;token=31415926535897932384626433832795028841971
  • সেই টোকেনটি একটি বিশাল, অসম্ভব-অনুমান করা এলোমেলো সংখ্যা যা mybank.comতারা যখন আপনার কাছে পরিবেশন করবে তখন তাদের নিজস্ব ওয়েব পৃষ্ঠায় অন্তর্ভুক্ত হবে। প্রতিবার তারা যে কোনও পৃষ্ঠাতে কোনও পৃষ্ঠা পরিবেশন করার সময় এটি আলাদা
  • আক্রমণকারী টোকেনটি অনুমান করতে সক্ষম হয় না, আপনার ওয়েব ব্রাউজারটিকে এটি আত্মসমর্পণ করতে রাজি করতে সক্ষম হয় না (যদি ব্রাউজারটি সঠিকভাবে কাজ করে ...), এবং তাই আক্রমণকারী একটি বৈধ অনুরোধ তৈরি করতে সক্ষম হবে না , কারণ অনুরোধগুলির সাথে অনুরোধ ভুল টোকেন (বা কোনও টোকেন) দ্বারা প্রত্যাখ্যান করা হবে www.mybank.com

ফলাফল: আপনি আপনার 10000আর্থিক ইউনিট রাখেন। আমি আপনাকে উইকিপিডিয়ায় কিছু দান করার পরামর্শ দিচ্ছি।

(আপনার মাইলেজ পরিবর্তিত হতে পারে.)

মন্তব্য পড়ার মূল্য থেকে সম্পাদনা করুন:

এটি উল্লেখ করার উপযুক্ত হবে যে HTTP অ্যাক্সেস নিয়ন্ত্রণের কারণে www.cute-cat-pictures.orgসাধারণত স্ক্রিপ্টটিতে আপনার অ্যান্টি-সিএসআরএফ টোকেন থেকে www.mybank.comঅ্যাক্সেস নেই। এই নোটটি এমন কিছু লোকের জন্য গুরুত্বপূর্ণ যারা অযৌক্তিকভাবে Access-Control-Allow-Origin: *প্রতিটি ওয়েবসাইটের প্রতিক্রিয়ার জন্য এটির জন্য কী তা জেনেও অযৌক্তিকভাবে একটি শিরোনাম প্রেরণ করে, কেবল কারণ তারা অন্য ওয়েবসাইট থেকে API ব্যবহার করতে পারে না।


36
এবং স্পষ্টতই টোকেনটির নাম আদর্শভাবে অ্যান্টি- সিএসআরএফ টোকেন রাখা হবে, তবে নামটি সম্ভবত এটি যথেষ্ট জটিল।
লুটজ প্রিচেল্ট

3
@ লুটজ প্রিচেল্ট আপনাকে ধন্যবাদ জাভাস্ক্রিপ্ট ব্রাউজার থেকে কোনও সত্যতা টোকেন পেতে সক্ষম হতে পারে না কেন?
বিকেএসপুরগাঁও

72
এটি উল্লেখ করার উপযুক্ত হবে যে HTTP অ্যাক্সেস নিয়ন্ত্রণের কারণে www.cute-cat-pictures.orgসাধারণত স্ক্রিপ্টটিতে আপনার অ্যান্টি-সিএসআরএফ টোকেন থেকে www.mybank.comঅ্যাক্সেস নেই। এই নোটটি এমন কিছু লোকের জন্য গুরুত্বপূর্ণ যারা অযৌক্তিকভাবে Access-Control-Allow-Origin: *প্রতিটি ওয়েবসাইটের প্রতিক্রিয়ার জন্য এটির জন্য কী তা জেনেও অযৌক্তিকভাবে একটি শিরোনাম প্রেরণ করে, কেবল কারণ তারা অন্য ওয়েবসাইট থেকে API ব্যবহার করতে পারে না।
সফট

9
@ অগাস্টিনরিডিংগার যদি আক্রমণকারী তার কম্পিউটারে ওয়েবপৃষ্ঠাটি খোলে - যেহেতু তাদের লগ ইন করা ব্যবহারকারীর কুকি নেই - তারা সংশ্লিষ্ট সিএসআরএফ টোকেন গ্রহণ করবে না (প্রতিটি সিএসআরএফ টোকেন কেবলমাত্র নির্দিষ্ট ব্যবহারকারী সেশনের জন্য বৈধ হওয়া উচিত)। আক্রমণকারী যদি চতুর-বিড়াল-ছবি ওয়েবসাইটে একটি স্ক্রিপ্ট স্থাপন করে ব্যবহারকারীর কম্পিউটারে টোকনযুক্ত ওয়েবপৃষ্ঠাটি লোড করার চেষ্টা করে, ব্রাউজারটি তার কারণে www.mybank.com (এবং টোকেন) পড়তে বাধা দেবে একই উত্স নীতি।
মার্সেল

13
@ লুটজপ্রেচেল্ট আমি মনে করি যে এটি টোকন সর্বদা আলাদা থাকে তা যথেষ্ট নয়, এটি একটি সেশনের সাথে যুক্ত করতে হবে এবং সার্ভারটি এটি প্রাপ্ত টোকেনটি একটি সেশনের জন্য তৈরি হয়েছিল যা সার্ভার প্রাপ্ত কুকি দ্বারা চিহ্নিত করে। অন্যথায়, হ্যাকার কেবল মাইব্যাঙ্ক নিজেই দেখতে পারেন এবং কিছু বৈধ টোকেন পেতে পারেন। সুতরাং আপনি যদি প্রতিটি ফর্মের সাথে একটি নতুন টোকেন ব্যবহার করেন তবে এটির সংরক্ষণ করতে হবে সার্ভারের সেশনডির সাথে যুক্ত করে। প্রতি সেশনে একই টোকেনটি ব্যবহার করা সম্ভবত সহজ।
মার্সেল

222

হ্যাঁ, পোস্টের ডেটা নিরাপদ। তবে সেই তথ্যটির উত্স নয়। আক্রমণকারীর ওয়েব পৃষ্ঠা ব্রাউজ করার সময় কেউ এইভাবে আপনার সাইটে লগ ইন করতে জেএস-এর সাথে ব্যবহারকারীদের প্রতারিত করতে পারে।

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


@ দিমিত্রি শেভচেনকো হাই, বুঝতে চেষ্টা করে কীভাবে এই পদ্ধতিটি কুকি + ফর্ম-ইনপুটটি সার্ভারের দিকের রেফারারের বৈধতা থেকে আলাদা? আমি যে উদাহরণগুলি পেয়েছি সেগুলি হ্যাকার সম্পর্কিত যা ব্যবহারকারীকে তার সাইট থেকে আসল সাইটে পোস্ট করার জন্য ট্রিক করা সম্পর্কিত।
ইথান

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

4
রেফারার পরিবর্তন করা সহজ, আমি এটি বলব না যে এটি নির্ভরযোগ্য তথ্যের একটি অংশ। সিএসআরএফ টোকন, তবে, সার্ভার সিক্রেট কী ব্যবহার করে তৈরি করা হয় এবং সাধারণত ব্যবহারকারীর সাথে আবদ্ধ থাকে
দিমিত্রি শেভচেঙ্কো

1
এটি সত্যিকারের হুমকির কারণ আমি সত্যিই বুঝতে পারি না। ব্যবহারকারী অন্য সাইটে লগইন হবে ... তবে মূল সাইটটিতে তথ্যটি পুনরুদ্ধার করার কোনও উপায় থাকবে না। রাইট?
আকিল ফার্নান্দেস

6
ঠিক আছে, ধরুন আমি একটি " bank.com/transfer?from=x&to=y " এর একটি দূষিত iframe ইনজেক্ট করেছি , বলুন, ফেসবুক.কম । আপনি যদি ব্যাংক ডটকমের গ্রাহক হন এবং আপনি ফেসবুকে যান, তবে এই আইফ্রেমে আপনার কুকিজ সহ ব্যাঙ্ক পৃষ্ঠাটি লোড করে দেবে (কারণ ব্রাউজারটি সেগুলি একটি পরিচিত ডোমেনে প্রেরণ করবে) এবং অর্থ স্থানান্তর করবে। তোমাকে কিছু না জেনে।
দিমিত্রি শেভচেঙ্কো

74

ফর্ম পৃষ্ঠাটি তৈরি করার সময় সাইটটি একটি অনন্য টোকেন তৈরি করে। এই টোকেনটির জন্য সার্ভারে ডেটা পোস্ট / ফিরিয়ে আনতে হবে।

যেহেতু টোকনটি আপনার সাইটের দ্বারা উত্পাদিত হয়েছে এবং কেবলমাত্র যখন ফর্ম সহ পৃষ্ঠাটি তৈরি করা হয় তখন সরবরাহ করা হয়, অন্য কোনও সাইট আপনার ফর্মগুলি অনুকরণ করতে পারে না - তাদের টোকেন থাকবে না এবং তাই আপনার সাইটে পোস্ট করতে পারে না।


9
কোনও ব্যবহারকারী উত্সের মধ্যে টোকেন আউটপুট দখল করতে পারে, তাদের কাছে প্রেরিত কুকিটি ধরে ফেলতে পারে এবং তৃতীয় পক্ষের সাইট থেকে জমা দিতে পারে?
জ্যাক মার্কেটি

9
@ জ্যাকমারচেটি হ্যাঁ তবে আপনি যখন কোনও তৃতীয় পক্ষের সাইট থেকে ফর্মটি জমা দিতে চেয়েছিলেন ততবার ব্যয় হবে কারণ আপনি পৃষ্ঠাটি লোড করতে এবং টোকেনটি পার্স করতে হবে। আপনি যদি আক্রমণটির এই ভেক্টরটির সাথে সম্পর্কিত হন তবে
সিএসআরএফ

3
আমার কাছে @ জ্যাকমারচেটি হিসাবে একই প্রশ্ন রয়েছে, যা পরিষ্কার নয় - যদি প্রতিটি লগইনে সিএসআরএফ টোকেন পরিবর্তন হয়। যদি এটি একই থাকে, তবে আক্রমণকারী প্রথমে লগ ইন করা, অনুরোধ টোকেনটি ধরে ফেলতে এবং তারপরে আক্রমণে সেই টোকেনটি fromোকানো থেকে কী আটকাবে?
পল প্রাইবিচ

7
@ পলপ্রিবিচ এটি প্রতিটি পৃষ্ঠার লোডে পরিবর্তিত হওয়া উচিত - প্রতিটি লগইনে নয়। এইভাবে আক্রমণকারীটিকে প্রতিবার তারা ফর্মটি জমা দিতে চাইলে পৃষ্ঠার অনুরোধ করতে হবে। এটিকে আরও বেশি কঠিন করে তোলে।
টেকোন

8
@ টোটোন, এটি আসলে এটিকে আরও বেশি কঠিন করে তোলে না। যদি চেষ্টা ও সময় দ্বিগুণ হয়। এটি কোনও ধরণের নিষিদ্ধ প্রক্রিয়াজাতকরণ যুক্ত করে না। কৌতুকটি সিএসআরএফ টোকেনকে একটি ডোমেন-নির্দিষ্ট কুকির সাথে সংযুক্ত করে ফর্মের সাথে এই কুকিটি প্রেরণ করছে। কুকি এবং ফর্ম পোস্ট উভয়ই পোষ্ট অনুরোধে সার্ভারে প্রেরণ করতে হবে। বৈধ অনুরোধ অনুকরণ করতে সক্ষম হওয়ার জন্য এই উপায়ে কুকি-হাইজ্যাকিং আক্রমণ প্রয়োজন।
পেড্রো কর্ডেরিও

55

ক্লাউড আন্ডার ব্লগে সিএসআরএফ টোকেনগুলির একটি ভাল ব্যাখ্যা রয়েছে।

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

ফর্মটি এতটা সহজ হতে পারে:

 <form action="http://a.com/tweet" method="POST">
   <input type="text" name="tweet">
   <input type="submit">
 </form> 

এখন কল্পনা করুন, কোনও খারাপ লোক তার দূষিত ওয়েবসাইটে এই ফর্মটি অনুলিপি করে আটকে দিয়েছে, আসুন বি.কম. ফর্মটি এখনও কাজ করবে। যতক্ষণ না কোনও ব্যবহারকারী আপনার টুইটারে সাইন ইন থাকে (যেমন তারা a.com এর জন্য একটি বৈধ সেশন কুকি পেয়েছে), http://a.com/tweetব্যবহারকারী যখন সাবমিট বাটনে ক্লিক করেন তখন পোষ্ট অনুরোধটি যথারীতি প্রেরণ করা হবে এবং প্রক্রিয়া করা হবে।

এখন পর্যন্ত এটি কোনও বড় সমস্যা নয় যতক্ষণ না ব্যবহারকারী ফর্মটি ঠিক কী করে তা সম্পর্কে সচেতন করা হবে, তবে আমাদের খারাপ লোক যদি ফর্মটিকে এইভাবে টুইট করে:

 <form action="https://example.com/tweet" method="POST">
   <input type="hidden" name="tweet" value="Buy great products at http://b.com/#iambad">
   <input type="submit" value="Click to win!">
 </form> 

এখন, যদি আপনার কোনও ব্যবহারকারী খারাপ লোকের ওয়েবসাইটে গিয়ে শেষ করে এবং "জয়ের জন্য ক্লিক করুন!" বোতামটি, ফর্মটি আপনার ওয়েবসাইটে জমা দেওয়া হয়েছে, ব্যবহারকারী সঠিকভাবে কুকির সেশন আইডি দ্বারা চিহ্নিত করা হবে এবং লুকানো টুইট প্রকাশিত হবে।

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

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

যদি আপনার ওয়েব অ্যাপ্লিকেশনটি POST এবং GET অনুরোধগুলির মধ্যে পার্থক্য না করে তবে পরিস্থিতি আরও খারাপ হয় (যেমন পিএইচপিতে $ _POST এর পরিবর্তে _RE $QQUEST ব্যবহার করে)। যে না! <img src="http://a.com/tweet?tweet=This+is+really+bad">দূষিত ওয়েবসাইট বা এমনকি একটি ইমেল এম্বেড করা , ডেটা পরিবর্তনের অনুরোধগুলি এত সহজে জমা দেওয়া যেতে পারে ।

আমি কীভাবে নিশ্চিত করব যে কোনও ফর্ম কেবলমাত্র আমার নিজের ওয়েবসাইট থেকে জমা দেওয়া যেতে পারে? এখানেই সিএসআরএফ টোকেন আসে A একটি সিএসআরএফ টোকেন একটি এলোমেলো, হার্ড-টু-অনুমানের স্ট্রিং। আপনি যে ফর্মটি সুরক্ষিত করতে চান সেই পৃষ্ঠায় সার্ভারটি একটি এলোমেলো স্ট্রিং তৈরি করবে, সিএসআরএফ টোকেন, এটি একটি লুকানো ক্ষেত্র হিসাবে ফর্মটিতে যুক্ত করবে এবং এটি কোনওভাবে মনে রাখবে, হয় এটি সেশনে সংরক্ষণ করে বা কুকি সেট করে either মানযুক্ত এখন ফর্মটি দেখতে এমন হবে:

    <form action="https://example.com/tweet" method="POST">
      <input type="hidden" name="csrf-token" value="nc98P987bcpncYhoadjoiydc9ajDlcn">
      <input type="text" name="tweet">
      <input type="submit">
    </form> 

যখন ব্যবহারকারী ফর্মটি জমা দেয়, সার্ভারকে কেবলমাত্র সিএসআরএফ-টোকেন (নামটির কোনও গুরুত্ব নেই) সার্ভারের দ্বারা স্মরণ করা সিএসআরএফ টোকেনের সাথে তুলনা করতে হবে। উভয় স্ট্রিং সমান হলে, সার্ভারটি ফর্মটি প্রক্রিয়া চালিয়ে যেতে পারে। অন্যথায় সার্ভারটি অবিলম্বে ফর্মটি প্রক্রিয়াকরণ বন্ধ করে একটি ত্রুটির সাথে প্রতিক্রিয়া জানাবে।

কেন এই কাজ করে? উপরের আমাদের উদাহরণ থেকে খারাপ লোকটি সিএসআরএফ টোকেন গ্রহণ করতে অক্ষম হওয়ার বিভিন্ন কারণ রয়েছে:

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

যেহেতু খারাপ লোকটির দূষিত পৃষ্ঠাটি আপনার ব্যবহারকারীর ব্রাউজার দ্বারা একটি অন্য ডোমেন (a.com এর পরিবর্তে b.com) থেকে লোড করা হয়েছে, খারাপ লোকটির জাভা স্ক্রিপ্ট কোড করার কোনও সুযোগ নেই, যা সামগ্রীটি লোড করে এবং তাই আমাদের ব্যবহারকারীর বর্তমান সিএসআরএফ টোকেন থেকে আপনার ওয়েবসাইট. এর কারণ ওয়েব ব্রাউজারগুলি ডিফল্টরূপে ক্রস-ডোমেন এজেএক্স অনুরোধগুলিকে অনুমতি দেয় না।

খারাপ লোকটি আপনার সার্ভার দ্বারা সেট করা কুকি অ্যাক্সেস করতে অক্ষম, কারণ ডোমেনগুলি মেলে না।

আমি কখন ক্রস-সাইট অনুরোধ জালিয়াতির বিরুদ্ধে রক্ষা করব? আপনি যদি নিশ্চিত করতে পারেন যে আপনি উপরে বর্ণিত হিসাবে জিইটি, পোষ্ট এবং অন্যান্য অনুরোধ পদ্ধতিগুলি মিশ্রিত না করে থাকেন তবে ডিফল্টরূপে সমস্ত পোষ্ট অনুরোধ রক্ষা করা একটি ভাল শুরু।

আপনাকে পুট এবং মুছে ফেলার অনুরোধগুলি রক্ষা করতে হবে না, কারণ উপরে বর্ণিত হিসাবে, এই পদ্ধতিগুলি ব্যবহার করে কোনও মানক এইচটিএমএল ফর্ম কোনও ব্রাউজার দ্বারা জমা দেওয়া যায় না।

অন্যদিকে জাভাস্ক্রিপ্ট প্রকৃতপক্ষে অন্যান্য ধরণের অনুরোধ করতে পারে, যেমন jQuery এর aj .জ্যাক্স () ফাংশনটি ব্যবহার করে, তবে মনে রাখবেন, অ্যাজ্যাক্সের জন্য ডোমেনগুলি কাজ করার অনুরোধগুলি অবশ্যই মিলবে (যতক্ষণ না আপনি স্পষ্টভাবে আপনার ওয়েব সার্ভারটি কনফিগার না করেন) ।

এর অর্থ, প্রায়শই আপনাকে এজেএক্স অনুরোধগুলিতে সিএসআরএফ টোকেন যুক্ত করতে হবে না, এমনকি তারা পোষ্ট অনুরোধগুলি হলেও, আপনাকে অবশ্যই নিশ্চিত করতে হবে যে আপনি কেবলমাত্র আপনার ওয়েব অ্যাপ্লিকেশনটিতে সিএসআরএফ চেককে বাইপাস করবেন যদি পোষ্ট অনুরোধটি আসলে একটি হয় AJAX অনুরোধ। আপনি এক্স-রিকুয়েস্টড-উইথের মতো শিরোনামের উপস্থিতি সন্ধান করে এটি করতে পারেন, যা এজেএক্স অনুরোধগুলিতে সাধারণত অন্তর্ভুক্ত থাকে। আপনি অন্য কাস্টম শিরোনাম সেট করতে এবং সার্ভারের পাশে এটির উপস্থিতি পরীক্ষা করতে পারেন। এটি নিরাপদ, কারণ কোনও ব্রাউজার কোনও নিয়মিত এইচটিএমএল ফর্ম জমা দেওয়ার জন্য কাস্টম শিরোনাম যুক্ত করে না (উপরে দেখুন), তাই মিঃ বাড গাইয়ের কোনও ফর্মের সাথে এই আচরণটি অনুকরণ করার কোনও সুযোগ নেই।

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


বিস্তারিত তথ্যের জন্য ধন্যবাদ। পোস্ট অনুরোধের সময়, সাইটটিকে সার্ভারে সিএসআরএফ টোকেন প্রেরণ করতে হয়, তবে ক্লায়েন্ট কখন এই সিএসআরএফ টোকন সার্ভারে প্রেরণ করবে? প্রিফলাইট বিকল্পগুলির অনুরোধটি করার সময় এটি কী? দয়া করে এই অংশটি বিস্তারিতভাবে বর্ণনা করুন ..
এস এম শ্রীকান্ত

@ ডান কীভাবে আসে ডটকম ডটকমকে অন্য সাইটের কুকিজ অ্যাক্সেস করতে পারে?
জাকির

8

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


7
রেফার হেডারের উপর নির্ভর করবেন না, এটি সহজেই নকল হতে পারে।
কাগ

3
এটা সঠিক উত্তর! টোকেনটি সার্ভারের একটি সেশনে আবদ্ধ থাকতে হবে। সর্বাধিক আপ করা উত্তরের পরামর্শ মতো কুকি + ফর্ম ডেটার তুলনা সম্পূর্ণ ভুল completely এই উপাদানগুলি উভয় অনুরোধের অংশ গঠন করে, যা ক্লায়েন্টটি তৈরি করে।
লি ডেভিস

3
আসলে না. টোকেনটি অবশ্যই সার্ভারের সাথে প্রতিটি অনুরোধের সাথে আবদ্ধ থাকতে হবে। যদি আপনি এটি কেবল সেশনে বেঁধে রাখেন, তবে আপনি সেশনের টোকেন চুরি করে সেই টোকেন দিয়ে একটি অনুরোধ জমা দেওয়ার ঝুঁকিটি চালান। সুতরাং সর্বাধিক সুরক্ষার জন্য টোকেনটি অবশ্যই প্রতিটি পোস্টে আবশ্যক tied
chrisl08
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.