এটি জেএসএন হাইজ্যাকিংয়ের মাধ্যমে প্রতিক্রিয়া প্রকাশে বাধা দেয়।
তত্ত্বের ক্ষেত্রে, HTTP প্রতিক্রিয়াগুলির বিষয়বস্তু একই উত্স নীতি দ্বারা সুরক্ষিত: একটি ডোমেনের পৃষ্ঠাগুলি অন্য ডোমেনের পৃষ্ঠাগুলি থেকে কোনও টুকরো তথ্য পেতে পারে না (স্পষ্টভাবে অনুমোদিত না হলে)।
একজন আক্রমণকারী আপনার পক্ষে অন্য ডোমেনের পৃষ্ঠাগুলির জন্য অনুরোধ করতে পারে, উদাহরণস্বরূপ একটি ট্যাগ <script src=...>
বা <img>
ট্যাগ ব্যবহার করে , তবে ফলাফল (শিরোনাম, বিষয়বস্তু) সম্পর্কে কোনও তথ্য পেতে পারে না।
সুতরাং, আপনি যদি কোনও আক্রমণকারীর পৃষ্ঠাতে যান তবে এটি gmail.com থেকে আপনার ইমেলটি পড়তে পারে না।
JSON সামগ্রীর অনুরোধের জন্য স্ক্রিপ্ট ট্যাগ ব্যবহার করার সময় বাদে, JSON আক্রমণকারীর নিয়ন্ত্রিত পরিবেশে জাভাস্ক্রিপ্ট হিসাবে কার্যকর করা হয়। আক্রমণকারী যদি অ্যারে বা অবজেক্ট কনস্ট্রাক্টর বা বস্তু নির্মানের সময় ব্যবহৃত অন্য কোনও পদ্ধতি প্রতিস্থাপন করতে পারে, জেএসওএন-এ থাকা যে কোনও কিছুই আক্রমণকারীর কোডের মধ্য দিয়ে যেতে পারে এবং তা প্রকাশ করা হবে।
নোট করুন যে JSON জাভাস্ক্রিপ্ট হিসাবে মৃত্যুদন্ড কার্যকর করার সময় ঘটেছিল, পার্স করার সময় নয়।
একাধিক প্রতিরোধ ব্যবস্থা রয়েছে:
জেএসএন কখনই কার্যকর করে না তা নিশ্চিত করে
while(1);
জেএসএন ডেটার আগে একটি বিবৃতি রেখে গুগল নিশ্চিত করে যে জাসন স্ক্রিপ্ট হিসাবে কখনই জেএসএন ডেটা কার্যকর করা হয় না।
কেবলমাত্র একটি বৈধ পৃষ্ঠায় পুরো সামগ্রীটি পাওয়া যাবে, ছাঁটাতে পারত while(1);
এবং বাকি অংশটি JSON হিসাবে পার্স করতে পারত ।
for(;;);
উদাহরণস্বরূপ ফেসবুকে একই ফলাফলের মতো জিনিসগুলি দেখা গেছে।
জেএসএন বৈধ জাভাস্ক্রিপ্ট নয় তা নিশ্চিত করা
একইভাবে, জেএসএনের আগে অবৈধ টোকেন যুক্ত করা &&&START&&&
নিশ্চিত করে তোলে যে এটি কখনই কার্যকর হয় না।
সর্বদা বাইরের কোনও বস্তুর সাথে JSON ফিরিয়ে দিন
এটি JSON হাইজ্যাকিং থেকে রক্ষা করার OWASP
প্রস্তাবিত উপায় এবং এটি স্বল্প হস্তক্ষেপ।
পূর্ববর্তী পাল্টা পদক্ষেপগুলির মতো, এটি নিশ্চিত করে যে JSON কখনই জাভাস্ক্রিপ্ট হিসাবে কার্যকর করা হবে না।
একটি বৈধ JSON অবজেক্ট, যখন কোনও কিছুর দ্বারা আবদ্ধ নয়, জাভাস্ক্রিপ্টে বৈধ নয়:
eval('{"foo":"bar"}')
// SyntaxError: Unexpected token :
এটি তবে বৈধ JSON:
JSON.parse('{"foo":"bar"}')
// Object {foo: "bar"}
সুতরাং, আপনি জবাবের শীর্ষ স্তরের সর্বদা কোনও বস্তু ফিরে আসবেন তা নিশ্চিত করুন যে এখনও জেএসএন বৈধ থাকাকালীন JSON বৈধ জাভাস্ক্রিপ্ট নয়।
মন্তব্যগুলিতে @hvd দ্বারা উল্লিখিত হিসাবে, খালি বস্তুটি {}
বৈধ জাভাস্ক্রিপ্ট, এবং অবজেক্টটি খালি রয়েছে তা জানা নিজেই মূল্যবান তথ্য হতে পারে।
উপরোক্ত পদ্ধতির তুলনা
OWASP উপায়টি কম অনুপ্রবেশকারী, কারণ এতে কোনও ক্লায়েন্ট লাইব্রেরি পরিবর্তন দরকার হয় না এবং বৈধ JSON স্থানান্তর করে। তবে অতীত বা ভবিষ্যতের ব্রাউজার বাগগুলি এটি পরাস্ত করতে পারে কিনা তা নিশ্চিত নয়। @ ওরিয়াদাম দ্বারা উল্লিখিত হিসাবে, এটি ত্রুটি-হ্যান্ডলিংয়ের মাধ্যমে পার্স ত্রুটিতে ডেটা ফাঁস করা যাবে কিনা (উদাহরণস্বরূপ উইন্ডো.অনরর) এটি পরিষ্কার নয়।
গুগলের উপায়ের জন্য এটি স্বয়ংক্রিয় ডি-সিরিয়ালাইজেশন সমর্থন করার জন্য ক্লায়েন্ট লাইব্রেরি প্রয়োজন এবং ব্রাউজার বাগগুলি সম্পর্কে এটি নিরাপদ হিসাবে বিবেচনা করা যেতে পারে।
দু'টি পদ্ধতিরই বিকাশকারীদের দুর্ঘটনাক্রমে দুর্বল JSON প্রেরণ করা থেকে বাঁচতে সার্ভার-পার্শ্ব পরিবর্তনগুলি প্রয়োজন।