আমার বিশ্বাস, ম্যাজেন্টোর কার্ট জিইটি অ্যাকশনে যোগ করার ক্ষেত্রে কেন কোনও সিএসআরএফ টোকেন "প্রয়োজন" তা এই প্রশ্নের একটি সুনির্দিষ্ট উত্তর উত্সাহিত করা কঠিন হবে। আমি এর উদ্দেশ্য ব্যাখ্যা করার চেষ্টা করব। আমি কোনও উপায়েই কোনও নিরাপত্তা বিশেষজ্ঞ নই এবং এই বিশেষ প্রসঙ্গে সিএসআরএফ সম্পর্কে এটি আমার ব্যাখ্যা।
প্রসঙ্গ
Owasp.org থেকে
ক্রস-সাইট রিকোয়েস্ট জালিয়াতি (সিএসআরএফ) এমন একটি আক্রমণ যা একটি শেষ ব্যবহারকারীকে কোনও ওয়েব অ্যাপ্লিকেশনটিতে অযাচিত ক্রিয়াকলাপ চালাতে বাধ্য করে যেখানে তারা বর্তমানে অনুমোদনপ্রাপ্ত। সিএসআরএফ আক্রমণগুলি বিশেষত রাষ্ট্র-পরিবর্তনকারী অনুরোধগুলিকে লক্ষ্য করে, ডেটা চুরি করে না, যেহেতু আক্রমণকারীটির নকল অনুরোধটির প্রতিক্রিয়া দেখার কোনও উপায় নেই।
এই আক্রমণটির একটি উদাহরণ ইমেল বা কোনও বিকল্প ওয়েবপৃষ্ঠায় একটি লুকানো চিত্র এম্বেড করা:
<img src="http://shop.com/cart/add?sku=sprocket&qty=5" width="0" height="0" border="0">
অনুরোধটি কোথা থেকে এসেছে ওয়েব সার্ভারটি আলাদা করবে না এবং বিশ্বস্ততার সাথে সেই ব্যবহারকারীর কার্টে আইটেমটি যুক্ত করবে।
সিএসআরএফ আক্রমণ প্রতিরোধের লক্ষ্য হল রাষ্ট্র পরিবর্তন করার অনুরোধগুলি প্রতিরোধ করা । একটি কার্টে একটি আইটেম যুক্ত করা রাষ্ট্র পরিবর্তন হিসাবে বিবেচিত হবে। সাধারণভাবে, আমি অর্ডার জমা দেওয়ার, তহবিল স্থানান্তরকরণ বা ইমেল ঠিকানা আপডেট করার তুলনায় এটি একটি নিরীহ অবস্থা পরিবর্তন হিসাবে বিবেচনা করব ।
রাষ্ট্র পরিবর্তন এবং এইচটিটিপি পদ্ধতিগুলি সম্পর্কে, আরএফসি 2616 নিম্নলিখিতটি বলে:
বিশেষত, কনভেনশনটি প্রতিষ্ঠিত হয়েছে যে জিইটি এবং হেড পদ্ধতিগুলির পুনরুদ্ধার ব্যতীত অন্য কোনও পদক্ষেপ গ্রহণের তাত্পর্য থাকা উচিত নয়। এই পদ্ধতিগুলিকে "নিরাপদ" হিসাবে বিবেচনা করা উচিত।
ম্যাজেন্টো এবং সিএসআরএফ
ম্যাজেন্টো টোকেন (ফর্ম কী) ব্যবহার করে অ্যাডমিন এবং সীমানা উভয় অঞ্চলের জন্য সিএসআরএফ প্রতিরোধ ব্যবস্থা প্রয়োগ করে। আমি ধরে নেব যে অন্যান্য বিকাশকারী দ্বারা নির্মিত প্ল্যাটফর্ম হিসাবে ম্যাগেন্টোর লক্ষ্য হ'ল সমস্ত রাষ্ট্রের পরিবর্তনের অনুরোধগুলি সুরক্ষিত করা । কারণটি হ'ল বাস্তবায়নকারী বিকাশকারী বা তৃতীয় পক্ষের এক্সটেনশনগুলি অসাবধানতার সাথে কীভাবে প্রকাশ করতে পারে তা তাদের কোনও ধারণা নেই। তৃতীয় পক্ষের মডিউল দ্বারা কোনও কিছু উন্মুক্ত করা এবং প্ল্যাটফর্মের জন্য খারাপ পিআর হওয়ার চেয়ে সমস্ত রাষ্ট্র পরিবর্তনের অনুরোধগুলি সুরক্ষিত করা নিরাপদ। আমি জানি না যে সমস্ত রাজ্য পরিবর্তনকারী অনুরোধগুলি সিএসআরএফ আক্রমণ থেকে সুরক্ষিত আছে কিনা ।
একটি বিষয় লক্ষণীয় যে ম্যাগেন্টো সর্বদা রাষ্ট্র পরিবর্তন করার অনুরোধ রক্ষা করতে ফর্ম কী ব্যবহার করে না। উদাহরণস্বরূপ, কার্ট থেকে মুছুন ( /checkout/cart/delete/id/{ID}
) এবং গ্রাহক ঠিকানা মুছুন ( /customer/address/delete/id/{ID}
) অনুরোধগুলি হ'ল জিইটি অনুরোধ যা কোনও সত্তা আইডিতে পাস করে। নিয়ামক (বা মডেলগুলি) তারপরে হ্যান্ডেলটি নিশ্চিত করে যে ব্যবহারকারীর সেই সত্তা রেকর্ডগুলি অপসারণের জন্য অনুমোদিত (রাষ্ট্র পরিবর্তন করুন)। এটি দুটি উদাহরণ যেখানে ম্যাগেন্টো আরএফসি 2616 অনুসরণ করে না । ন্যায়সঙ্গতভাবে, কিছু ব্যবহারের ক্ষেত্রে এটি ব্যবহারিক বা প্রয়োজনীয় নাও হতে পারে।
এটি প্রদর্শিত হয় যে Mage_Checkout_CartController::addAction
পদ্ধতিতে ফর্ম কী চেকটি সংস্করণ 1.8 এ যুক্ত হয়েছিল। রিলিজ নোটগুলি থেকে আমাদের নিম্নলিখিতগুলি বন্ধ করতে হবে:
ওয়েব স্টোরের ক্রস-সাইট রিকোয়েস্ট জালিয়াতি (সিএসআরএফ) এর ফলে আসতে পারে এমন সমস্যার সমাধান।
দুর্ভাগ্যক্রমে ভাষাটি অস্পষ্ট এবং "থাকতে পারে" আমাকে বিশ্বাস করতে পরিচালিত করে যা আমি আগেই বলেছিলাম যে অনুমানের কারণে হয়েছিল: নিরাপদ রাষ্ট্র পরিবর্তনের অনুরোধগুলি। অতিরিক্ত প্যারামিটারগুলি প্রেরণের সম্ভাবনা থাকতে পারে যা একরকম অনিচ্ছাকৃত আচরণের কারণ:/checkout/cart/add/product/337/email/new@address.com/password/l33tp4ssw0rd
ধারণাটি হ'ল কার্টে কিছু যুক্ত করে কিছু বিট কোড (কোর বা তৃতীয় পক্ষ) রয়েছে যা কার্টে যুক্ত হওয়ার সময় ট্রিগার হতে দেখা যায়, যেমন কোনও ইভেন্টের মাধ্যমে প্রেরণ।
এটি অসম্ভব বলে মনে হচ্ছে যে বাক্সের বাইরে এই ধরনের দুর্বলতা রয়েছে এবং যদি কেউ আশা করে যে ম্যাজেন্টো বিশদ / ঝুঁকি প্রকাশের জন্য আরও ভাল কাজ করবে। একটি ঝুঁকি আমি দেখতে পেলাম যে product_options
বিক্রয়কর্ম আইটেম টেবিলের কলামে অ্যাড করার সময় ম্যাজেন্টো অন্ধভাবে অনুরোধের প্যারামিটারগুলি সঞ্চয় করে (দেখুন info_buyRequest
:)। তত্ত্ব কেউ অদ্ভুত ক্যোয়ারী পরামিতি সঙ্গে তাদের কার্ট আইটেম যোগ ব্যবহারকারীদের একটি গ্রুপ রত পারে এবং যে মধ্যে সংরক্ষিত করতে হবে sales_flat_quote_item_option
টেবিল এবং শেষ পর্যন্ত sales_flat_order_item
টেবিল যদি তারা করছি আরো রূপান্তর করতে ঐ ব্যবহারকারীদের পেতে সক্ষম। এটি বেশিরভাগ ক্ষেত্রে আমার কাছে খুব অসম্ভব বলে মনে হয়।
ফর্ম কী ইস্যুতে কার্টে যুক্ত করুন
এফপিসি বাস্তবায়ন এবং সিএসআরএফ টোকেন নিয়ে লোকেদের মধ্যে যে বড় সমস্যা রয়েছে তা হ'ল তারা শেষ পর্যন্ত ক্যাশে। ক্যাশে উষ্ণ হওয়া প্রথম ক্লায়েন্টটি টোকেন উত্পন্ন করে, যখন দ্বিতীয় ক্লায়েন্ট একটি ক্যাশে এইচআইটি পায় তাদের এখন প্রথম ব্যবহারকারীদের টোকেন সহ একটি পৃষ্ঠা দেওয়া হয়েছে। ফর্মটি জমা দেওয়ার সময় টোকেনগুলি মিলবে না।
ম্যাজেন্টো এন্টারপ্রাইজ ক্যাশেড পৃষ্ঠাগুলিতে ফর্ম কীগুলি সন্ধান করতে / প্রতিস্থাপন করতে স্থানধারক ব্যবহার করে। বার্নিশ বাস্তবায়নগুলি যেখানে কোনও ফর্ম কী ব্যবহার করা হয়েছে সেখানে ইএসআই ব্যবহারের অনুরূপ করবে।
আমি জানতে আগ্রহী হয়ে উঠছি যে আরও কিছু জনপ্রিয় "এজ্যাক্স কার্ট" এক্সটেনশানগুলি তাদের কার্টের অনুরোধগুলিতে অ্যাড করার সময় সিএসআরএফ টোকেনটি চেক করে কিনা।
একটি বৈশিষ্ট্য অনুরোধ যেখানে আমি সিএসআরএফ টোকনটি অ্যাড টু কার্ট অ্যাকশনের জন্য শেষ করেছি ইমেল বা অন্যান্য ওয়েবসাইটগুলিতে (সোশ্যাল মিডিয়া) ব্যবহারের জন্য কার্টের লিঙ্কগুলিতে অ্যাড তৈরির সুযোগ দেয়। কখনও কখনও বিপণন ব্যবহারকারীরা সরাসরি কার্টে একটি আইটেম যুক্ত করতে এবং কার্টে পুনর্নির্দেশ বা তত্ক্ষণাত চেকআউট করতে চায়। কোনও সিএসআরএফ টোকেন প্রয়োজন হলে এটি সহজেই করা যায় না। আপনি যদি ঝুঁকির মাত্রা নিয়ে স্বাচ্ছন্দ্য বোধ করেন এবং নিজের এবং কোনও তৃতীয় পক্ষের কোডকে বিশ্বাস করেন তবে আমি কেবল এটিই সুপারিশ করব ।