টিএলডিআর: দূষিত কোডটির উত্সটি স্পোফ করা থেকে বিরত করার কিছুই নেই। যখন এটি ঘটে তখন আপনার সার্ভারটি কখনই এটি সম্পর্কে জানতে পারবে না এবং অনুরোধগুলি অনুযায়ী কাজ করবে। কখনও কখনও এই অনুরোধগুলি ব্যয়বহুল। সুতরাং কোনও ধরণের সুরক্ষার জায়গায় CORS ব্যবহার করবেন না।
আমি সম্প্রতি সিওআরএসের সাথে খেলছিলাম এবং আমি নিজেই একই প্রশ্নটি জিজ্ঞাসা করেছি। আমি যা পেয়েছি তা হ'ল ব্রাউজারটি একটি স্পোফড সিওআরএস অনুরোধটি জানার জন্য যথেষ্ট স্মার্ট হতে পারে তবে আপনার সার্ভারটি তেমন স্মার্ট নয়।
প্রথম জিনিসটি আমি খুঁজে পেলাম যে Origin
শিরোনামটি এইচটিটিপি নিষিদ্ধ শিরোনামের নাম যা প্রোগ্রামগতভাবে পরিবর্তন করা যায় না। যার অর্থ আপনি গুগল ক্রোমের জন্য শিরোনাম সংশোধন করে প্রায় 8 সেকেন্ডে এটি সংশোধন করতে পারেন ।
এটি পরীক্ষা করতে, আমি দুটি ক্লায়েন্ট ডোমেন এবং একটি সার্ভার ডোমেন সেট আপ করেছি। আমি সার্ভারে একটি কর্স হোয়াইটলিস্ট অন্তর্ভুক্ত করেছি, যা ক্লায়েন্ট 1 থেকে ক্লায়েন্ট 2 এর চেয়ে নয় বরং CORS অনুরোধগুলি মঞ্জুরি দিয়েছিল both
তারপরে আমি Origin
ক্লায়েন্ট 1 এর সাথে মেলে ক্লায়েন্ট 2 এর শিরোলেখটিকে ফাঁকি দিয়েছি । সার্ভারটি স্পোফড Origin
শিরোলেখ পেয়েছে এবং সফলভাবে শ্বেত তালিকাটি চেকটি পাস করেছে (বা আপনি যদি কাচের অর্ধেক খালি ধরণের লোক হন তবে ব্যর্থ হন)। এর পরে, সার্ভারটি যে সমস্ত সংস্থান গ্রহণ করার জন্য ডিজাইন করা হয়েছিল (ডাটাবেস কল, ব্যয়বহুল ইমেল প্রেরণ, আরও বেশি ব্যয়বহুল এসএমএস বার্তা প্রেরণ ইত্যাদি) ব্যবহার করে কর্তব্য সম্পাদন করেছিল। এটি হয়ে গেলে, সার্ভারটি খুশি হয়ে স্পুফড শিরোনামটি Access-Control-Allow-Origin
ব্রাউজারে ফিরে পাঠিয়েছিল ।
আমি যে ডকুমেন্টেশন পড়েছি তাতে বলা হয়েছে যে Access-Control-Allow-Origin
প্রাপ্ত মানটি অবশ্যই Origin
অনুরোধে প্রেরিত মানের সাথে মেলে । তারা মিলছে, তাই আমি ক্রোমে নিম্নলিখিত বার্তাটি দেখে অবাক হয়েছি:
XMLHttpRequest লোড করতে পারে না http://server.dev/test
। 'অ্যাক্সেস-কন্ট্রোল-অলজন-অরিজিন' শিরোনামটির একটি মান রয়েছে http://client1.dev
যা সরবরাহিত উত্সের সমান নয়। উত্স http://client2.dev
তাই অ্যাক্সেস অনুমোদিত নয়।
আমি যে ডকুমেন্টেশন পড়েছি তা সঠিক বলে মনে হচ্ছে না। ক্রোমের নেটওয়ার্ক ট্যাবটি স্পষ্টভাবে অনুরোধ এবং প্রতিক্রিয়া শিরোনাম উভয়ই হিসাবে দেখায় http://client1.dev
, তবে আপনি ত্রুটিতে দেখতে পাচ্ছেন যে ক্রোম কোনওভাবেই জানে যে আসল উত্সটি ছিল http://client2.dev
এবং সঠিকভাবে প্রতিক্রিয়াটিকে প্রত্যাখাত করে। যা এই মুহুর্তে কোনও বিষয় নয় কারণ সার্ভার ইতিমধ্যে স্পোফযুক্ত অনুরোধ গ্রহণ করেছে এবং আমার অর্থ ব্যয় করেছে।
foo.com
) প্রদান করা হয়েছে (এখানে ) থেকেAccess-Control-Allow-Origin
শিরোনাম সরবরাহ করতে হবে অন্যথায় ব্রাউজারটি অনুরোধটিকে অনুমতি দেয় নাbar.com
।