কিভাবে Http শুধু কুকি AJAX অনুরোধ সঙ্গে কাজ করবেন না?




cookies httponly (8)

ব্যাখ্যা হিসাবে - সার্ভারের দৃষ্টিকোণ থেকে, একটি AJAX অনুরোধ দ্বারা অনুরোধ করা পৃষ্ঠাটি একটি লিঙ্কের উপর ক্লিক করে ব্যবহারকারী দ্বারা একটি HTTP HTTP এর অনুরোধের জন্য প্রয়োজনীয় নয়। সমস্ত স্বাভাবিক অনুরোধের বৈশিষ্ট্য: ব্যবহারকারী-এজেন্ট, আইপি, সেশন, কুকি ইত্যাদি সার্ভারে প্রেরিত হয়।

কুকিজের উপর ভিত্তি করে অ্যাক্সেস বিধিনিষেধগুলির সাথে যদি কোনও সাইটে AJAX ব্যবহার করা হয় তবে জাভাস্ক্রিপ্টকে কুকিগুলিতে অ্যাক্সেস প্রয়োজন। শুধু একটি AJAX সাইটে কুকিজ কাজ করবে?

সম্পাদনা করুন: মাইক্রোসফ্ট যদি কেবলমাত্র HttpOnly উল্লেখ করা থাকে তবে কুকিজগুলিতে JavaScript অ্যাক্সেস নিষিদ্ধ করে XSS আক্রমণগুলি প্রতিরোধ করার উপায় তৈরি করেছে। ফায়ারফক্স পরে এই গৃহীত। তাই আমার প্রশ্ন হল: যদি আপনি স্ট্যাক ওভারফ্লোের মতো কোনও সাইটে AJAX ব্যবহার করেন তবে কেবলমাত্র কুকিগুলি কি একটি বিকল্প?

সম্পাদনা 2: প্রশ্ন 2. যদি শুধুমাত্র HTTP এর উদ্দেশ্য কুকিজে জাভাস্ক্রিপ্ট অ্যাক্সেস প্রতিরোধ করা হয় এবং আপনি এখনও XmlHttpRequest অবজেক্টের মাধ্যমে জাভাস্ক্রিপ্টের মাধ্যমে কুকিজ পুনরুদ্ধার করতে পারেন তবে কেবলমাত্র Http এর বিন্দু কী ?

সম্পাদনা 3: এখানে উইকিপিডিয়া থেকে একটি উদ্ধৃতি রয়েছে:

যখন ব্রাউজারটি এমন একটি কুকি পায়, তখন এটি নিম্নোক্ত HTTP বিনিময়গুলিতে স্বাভাবিক হিসাবে ব্যবহার করা হয়, তবে এটি ক্লায়েন্ট-সাইড স্ক্রিপ্টগুলিতে দৃশ্যমান না হয়। [32] HttpOnly পতাকা কোনো মান অংশ নয়, এবং সমস্ত ব্রাউজারে প্রয়োগ করা হয় না। নোট করুন যে কোনও XMLHTTPRequest এর মাধ্যমে সেশন কুকি পড়ার বা লেখার কোনো বাধা নেই। [33]।

আমি বুঝতে পারি যে যখন আপনি HttpOnly ব্যবহার করেন তখন document.cookie অবরুদ্ধ হয়। কিন্তু মনে হচ্ছে আপনি XMLHttpRequest বস্তুর মধ্যে কুকি মানগুলি এখনও পড়তে পারেন, XSS এর জন্য অনুমতি দেয়। কিভাবে Http শুধু আপনি চেয়ে কোন নিরাপদ করে তোলে? কুকি অপরিহার্যভাবে শুধুমাত্র পড়া দ্বারা?

আপনার উদাহরণে, আমি আপনার document.cookie লিখতে পারছি না, তবে আমি এখনও আপনার কুকি চুরি করতে এবং XMLHttpRequest বস্তুটি ব্যবহার করে এটি আমার ডোমেনে পোস্ট করতে পারি।

<script type="text/javascript">
    var req = null;
    try { req = new XMLHttpRequest(); } catch(e) {}
    if (!req) try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {}
    if (!req) try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {}
    req.open('GET', 'http://stackoverflow.com/', false);
    req.send(null);
    alert(req.getAllResponseHeaders());
</script>

সম্পাদনা করুন 4: দুঃখিত, আমি বোঝাতে চাই যে আপনি XMLHttpRequest স্ট্যাকঅভারফ্লো ডোমেনে পাঠাতে পারেন এবং তারপরে getAllResponseHeaders () এর একটি স্ট্রিংয়ের ফলাফলটি সংরক্ষণ করুন, কুকিটি regex করুন এবং তারপরে একটি বহিরাগত ডোমেনে পোস্ট করুন। মনে হচ্ছে উইকিপিডিয়া এবং হ্যাকাররা এই সাথে আমার সাথে একমত, কিন্তু আমি পুনরায় শিক্ষিত হতে চাই ...

চূড়ান্ত সম্পাদনা: আহহ, দৃশ্যত উভয় সাইট ভুল, এই আসলে FireFox একটি বাগ । IE6 & 7 আসলেই শুধুমাত্র একমাত্র ব্রাউজার যা বর্তমানে সম্পূর্ণভাবে Http সমর্থন করে।

আমি শিখেছি সবকিছু পুনরাবৃত্তি:

  • Http শুধুমাত্র IE7 এ document.cookie এবং ফায়ারফক্সের সমস্ত অ্যাক্সেসকে সীমাবদ্ধ করে (অন্যান্য ব্রাউজার সম্পর্কে নিশ্চিত নয়)
  • Http শুধুমাত্র IE7 এ XMLHttpObject.getAllResponseHeaders () এ প্রতিক্রিয়া শিরোনাম থেকে কুকি তথ্য সরান।
  • XMLHttpObjects শুধুমাত্র তাদের থেকে উদ্ভূত ডোমেনে জমা দেওয়া যেতে পারে, তাই কুকিজগুলির ক্রস ডোমেন পোস্টিং নেই।

সম্পাদনা: এই তথ্য সম্ভবত আপ টু ডেট আছে।


হ্যাঁ, কুকিজ Ajax জন্য খুব দরকারী।

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

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

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


না, AJAX কল অনুরোধগুলির পৃষ্ঠাটি কুকিজগুলিতেও অ্যাক্সেস আছে এবং আপনি লগ ইন করেছেন কিনা তা যাচাই করে।

আপনি জাভাস্ক্রিপ্টের সাথে অন্য প্রমাণীকরণ করতে পারেন, তবে আমি এটি বিশ্বাস করব না, আমি সর্বদা ব্যাক-এন্ডে কোনও ধরণের প্রমাণীকরণ পরীক্ষণ নির্বাণ করতে পছন্দ করি।


হ্যাঁ, তারা একটি Ajax ভিত্তিক সাইটের জন্য একটি কার্যকর বিকল্প। প্রমাণীকরণ কুকি স্ক্রিপ্ট দ্বারা ম্যানিপুলেশন জন্য নয়, তবে কেবল সার্ভারে তৈরি সমস্ত HTTP অনুরোধ ব্রাউজার দ্বারা অন্তর্ভুক্ত করা হয়।

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

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

আমি সত্যিই HTTP কুকি পছন্দ করি - এটি এমন এক মালিকানাধীন ব্রাউজার এক্সটেনশানগুলির মধ্যে একটি যা সত্যিই পরিচ্ছন্ন ধারণা।


হ্যাঁ, এই কার্যকারিতাটির জন্য HTTP- শুধুমাত্র কুকিগুলি ভাল হবে। তারা এখনও সার্ভারে XmlHttpRequest এর অনুরোধ সরবরাহ করবে।

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

আরো সাধারণভাবে, কুকিজ AJAX জন্য প্রয়োজন হয় না । XmlHttpRequest সমর্থন (বা এমনকি পুরানো ব্রাউজারে আইফ্রেম রিমোটিং) টেকনিক্যালি প্রয়োজন হয় যে সব।

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

আপনার উদাহরণে, আমি আপনার document.cookie এ লিখতে পারছি না, তবে আমি এখনও আপনার কুকি চুরি করতে এবং XMLHttpRequest বস্তুটি ব্যবহার করে এটি আমার ডোমেনে পোস্ট করতে পারি।

XmlHttpRequest ক্রস ডোমেন অনুরোধ করবে না (ঠিক যে কারণে আপনি স্পর্শ করছেন)।

আইফ্রেম রিমোটিং বা JSONP ব্যবহার করে কুকিটি আপনার ডোমেনে পাঠাতে আপনি সাধারণত স্ক্রিপ্টটি ইনজেক্ট করতে পারেন তবে HTTP- এটি কেবল অ্যাক্সেসযোগ্য হওয়ার পরে আবার কুকিকে সুরক্ষা দেয়।

আপনি সার্ভারের পাশে .com আপস করা না থাকলে, আপনি আমার কুকি চুরি করতে পারবেন না।

সম্পাদনা 2: প্রশ্ন 2. যদি কেবলমাত্র HTTP এর উদ্দেশ্য কুকিজগুলিতে জাভাস্ক্রিপ্ট অ্যাক্সেস প্রতিরোধ করা হয় এবং আপনি এখনও XmlHttpRequest অবজেক্টের মাধ্যমে জাভাস্ক্রিপ্টের মাধ্যমে কুকিজ পুনরুদ্ধার করতে পারেন তবে কেবলমাত্র Http-এর বিন্দু কি?

এই দৃশ্যকল্প বিবেচনা করুন:

  • আমি পৃষ্ঠায় জাভাস্ক্রিপ্ট কোড ইনজেকশন একটি এভিনিউ খুঁজে।
  • জেফ লোড পৃষ্ঠা এবং আমার দূষিত জাভাস্ক্রিপ্ট খনি মেলে তার কুকি পরিবর্তন।
  • জেফ আপনার প্রশ্নের একটি নক্ষত্র উত্তর জমা।
  • কারন সে তার পরিবর্তে আমার কুকি তথ্য দিয়ে জমা দেয়, উত্তর আমার হয়ে যাবে।
  • আপনি "আমার" তারকাবাদী উত্তর ভোট।
  • আমার বাস্তব অ্যাকাউন্ট বিন্দু পায়।

HTTP- শুধুমাত্র কুকিজের সাথে, দ্বিতীয় পদক্ষেপটি অসম্ভব হবে, ফলে আমার XSS প্রচেষ্টাটি হারাবে।

সম্পাদনা করুন 4: দুঃখিত, আমি বোঝাতে চাই যে আপনি XMLHttpRequest স্ট্যাকঅভারফ্লো ডোমেনে পাঠাতে পারেন এবং তারপরে getAllResponseHeaders () এর একটি স্ট্রিংয়ের ফলাফলটি সংরক্ষণ করুন, কুকিটি regex করুন এবং তারপরে একটি বহিরাগত ডোমেনে পোস্ট করুন। মনে হচ্ছে উইকিপিডিয়া এবং হ্যাকাররা এই সাথে আমার সাথে একমত, কিন্তু আমি পুনরায় শিক্ষিত হতে চাই ...

এটাই সঠিক. আপনি এখনও যে উপায় হাইজ্যাক করতে পারেন। এটি আপনার বিরুদ্ধে XSS হ্যাক এমনকি সফলভাবে নির্বাহ করতে পারেন যারা মানুষের উল্লেখযোগ্যভাবে পাতলা করে তোলে।

যাইহোক, যদি আপনি আমার উদাহরণ দৃশ্যকল্পতে ফিরে যান তবে আপনি দেখতে পারেন যে HTTP- শুধুমাত্র সফলভাবে XSS আক্রমণগুলি কেটে দেয় যা ক্লায়েন্টের কুকিজগুলি পরিবর্তন করতে নির্ভর করে (অস্বাভাবিক নয়)।

এটি হ'ল এগুলি উড়িয়ে দেয় যে ক) কোন একক উন্নতি সমস্ত দুর্বলতা সমাধান করবে না এবং বো) কোনও সিস্টেম সম্পূর্ণ নিরাপদ থাকবে না। HTTP- শুধুমাত্র এক্সএসএস বিরুদ্ধে ঝাঁকনি একটি দরকারী হাতিয়ার।

একইভাবে, XmlHttpRequest- এ ক্রস ডোমেন সীমাবদ্ধতা সমস্ত XSS শোষণগুলি প্রতিরোধে 100% সফল না হলেও, আপনি এখনও সীমাবদ্ধতা অপসারণের স্বপ্ন দেখবেন না।


অগত্যা না, এটা আপনি করতে চান তা নির্ভর করে। আপনি একটি বিট প্রসারিত করতে পারে? AJAX গুলিকে কাজ করার জন্য কুকিজের অ্যাক্সেসের প্রয়োজন নেই, এটি তথ্যটি সরাতে নিজের অনুরোধ করতে পারে, পৃষ্ঠাটি অনুরোধ করে যে AJAX কলটি কুকি ডেটা অ্যাক্সেস করতে পারে এবং জাভাস্ক্রিপ্ট ছাড়াই সরাসরি কলিং স্ক্রিপ্টে ফিরে যেতে অনুরোধ করে। বিস্কুট


তাই আমি জাভাস্ক্রিপ্ট আপনার কুকি অ্যাক্সেস প্রয়োজন অনুমিত হয়।

আপনার ব্রাউজার থেকে সমস্ত HTTP অনুরোধ প্রশ্ন জন্য আপনার কুকি তথ্য প্রেরণ। জাভাস্ক্রিপ্ট উভয় কুকি সেট এবং পড়তে পারেন। কুকিজগুলি অ্যাজাক্স অ্যাপ্লিকেশনের জন্য প্রয়োজনীয় সংজ্ঞা দ্বারা নয়, তবে বেশিরভাগ ওয়েব অ্যাপ্লিকেশনগুলির জন্য এটি ব্যবহারকারীর অবস্থা বজায় রাখতে প্রয়োজনীয়।

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


কুকিগুলি স্বয়ংক্রিয়ভাবে ব্রাউজার দ্বারা পরিচালিত হয় যখন আপনি একটি AJAX কল করেন, তাই আপনার জাভাস্ক্রিপ্টগুলির কুকিজের সাথে ঘন ঘন জাগানো প্রয়োজন নেই।





httponly