কোয়েরি স্ট্রিংয়ের সর্বোচ্চ সম্ভাব্য দৈর্ঘ্য কত?


558

এটি কি ব্রাউজার নির্ভর? এছাড়াও, বিভিন্ন ওয়েব স্ট্যাকগুলির অনুরোধ থেকে তারা কতটা ডেটা পেতে পারে তার আলাদা সীমাবদ্ধতা রয়েছে?


এছাড়াও আপনি এই পরীক্ষা করতে পারবেন stackoverflow.com/questions/417142/...
Xinus

এটি কেবল জিইটি অনুরোধের জন্য! পোষ্ট অনুরোধের সর্বাধিক আকার (মাল্টিপার্ট / ফর্ম-ডেটা সহ বা ছাড়াই) এখানে অজানা!
পিটার -

উত্তর:


995

আরএফসি 2616 (হাইপারটেক্সট ট্রান্সফার প্রোটোকল - এইচটিটিপি / 1.1) জানায় যে কোনও ক্যোয়ারিং স্ট্রিংয়ের (দৈর্ঘ্য 3.2.1) দৈর্ঘ্যের সীমা নেই। আরএফসি 3986 (ইউনিফর্ম রিসোর্স আইডেন্টিফায়ার - ইউআরআই) আরও জানায় যে কোনও সীমাবদ্ধতা নেই, তবে ডিএনএসের সীমাবদ্ধতার কারণে (বিভাগ 2.3.3) হোস্টনামটি 255 টি অক্ষরে সীমাবদ্ধ রয়েছে তা নির্দেশ করে।

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

  • মাইক্রোসফ্ট ইন্টারনেট এক্সপ্লোরার (ব্রাউজার)
    মাইক্রোসফ্ট জানিয়েছে যে ইন্টারনেট এক্সপ্লোরারটিতে একটি ইউআরএলের সর্বাধিক দৈর্ঘ্য 2,083 অক্ষর, যার URL অংশের অংশে 2,048 টির বেশি অক্ষর নেই। এটির চেয়ে বেশি সময় ধরে ইউআরএলগুলি ব্যবহারের চেষ্টাগুলি ইন্টারনেট এক্সপ্লোরারে একটি পরিষ্কার ত্রুটি বার্তা তৈরি করেছে।

  • মাইক্রোসফ্ট এজ (ব্রাউজার)
    সীমাটি প্রায় 81578 অক্ষর হিসাবে উপস্থিত বলে মনে হচ্ছে। মাইক্রোসফ্ট প্রান্তের URL দৈর্ঘ্য সীমাবদ্ধতা দেখুন

  • Chrome
    এটি 64k অক্ষরের পরে URL প্রদর্শন করা বন্ধ করে , তবে 100k এর বেশি অক্ষর পরিবেশন করতে পারে। এর বাইরে আর কোনও পরীক্ষা করা হয়নি।

  • ফায়ারফক্স (ব্রাউজার)
    65,536 টি অক্ষরের পরে, অবস্থান বারটি আর উইন্ডোজ ফায়ারফক্স 1.5.x এ URL প্রদর্শন করে না। তবে লম্বা ইউআরএল কাজ করবে। ১০,০০০ অক্ষরের পরে আর পরীক্ষা করা হয়নি।

  • সাফারি (ব্রাউজার)
    কমপক্ষে 80,000 অক্ষর কাজ করবে। এর বাইরে পরীক্ষা করার চেষ্টা করা হয়নি।

  • অপেরা (ব্রাউজার)
    কমপক্ষে 190,000 অক্ষর কাজ করবে। 190,000 অক্ষরের পরে পরীক্ষা বন্ধ করে দেওয়া হয়েছে। উইন্ডোজের জন্য অপেরা 9, অবস্থান বারে পুরোপুরি সম্পাদনাযোগ্য, অনুলিপিযোগ্য এবং পেষ্টযোগ্য ইউআরএল এমনকি 190,000 অক্ষরে প্রদর্শন করা চালিয়ে যায়।

  • অ্যাপাচি (সার্ভার)
    প্রাথমিকভাবে ওয়েব ব্রাউজারগুলিতে সর্বাধিক ইউআরএল দৈর্ঘ্য পরিমাপ করার চেষ্টা করে যা প্রায় 4,000 অক্ষরের একটি সার্ভারের ইউআরএল দৈর্ঘ্যের সীমাতে আবদ্ধ হয়, তারপরে অ্যাপাচি একটি "413 সত্তা খুব বড়" ত্রুটি তৈরি করে। রেড হ্যাট এন্টারপ্রাইজ লিনাক্স 4-এ পাওয়া আপ টু ডেট অ্যাপাচি বিল্ড ব্যবহৃত হয়েছিল। অফিসিয়াল অ্যাপাচি ডকুমেন্টেশন কেবল একটি অনুরোধে পৃথক ক্ষেত্রে 8,192-বাইট সীমা উল্লেখ করে।

  • মাইক্রোসফ্ট ইন্টারনেট তথ্য সার্ভার (সার্ভার)
    ডিফল্ট সীমাটি 16,384 টি অক্ষর (হ্যাঁ, মাইক্রোসফ্টের ওয়েব সার্ভার মাইক্রোসফ্টের ওয়েব ব্রাউজারের চেয়ে দীর্ঘতর ইউআরএল গ্রহণ করে)। এটি কনফিগারযোগ্য।

  • পার্ল এইচটিটিপি :: ডেমন (সার্ভার)
    8,000 বাইট পর্যন্ত কাজ করবে। পার্লের এইচটিটিপি :: ডেমন মডিউলের সাহায্যে ওয়েব অ্যাপ্লিকেশন সার্ভারগুলি নির্মাণকারী সমস্ত HTTP অনুরোধ শিরোনামের সম্মিলিত আকারে একটি 16,384 বাইট সীমা সম্মুখীন করবে। এটিতে পোস্ট-পদ্ধতি ফর্ম ডেটা, ফাইল আপলোড ইত্যাদি অন্তর্ভুক্ত নয় তবে এতে URL টি অন্তর্ভুক্ত নেই। অনুশীলনে এর ফলে 413 ত্রুটি হয়েছিল যখন একটি URL 8,000 টির চেয়ে বেশি অক্ষরের চেয়ে বেশি দীর্ঘ ছিল। এই সীমাবদ্ধতা সহজেই সরানো যেতে পারে। ডেমন.পিএম-এ 16x1024 এর সমস্ত উপস্থিতি সন্ধান করুন এবং এগুলিকে আরও বড় মান দিয়ে প্রতিস্থাপন করুন। অবশ্যই, এটি পরিষেবা আক্রমণকে অস্বীকার করার জন্য আপনার এক্সপোজারকে বাড়িয়ে তুলবে।


8
আপনি "মাইক্রোসফ্ট ইন্টারনেট এক্সপ্লোরার (ব্রাউজার)" এর পরিবর্তে সংস্করণ নম্বরটি কেন বলছেন না?
LCJ

5


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

java.lang.IllegalArgumentException: Request header is too largeটমক্যাট স্প্রিং বুট অ্যাপ্লিকেশন সার্ভারের কারণগুলি ।
পরমবীর সিং কারওয়াল

12

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

ওয়েবকনফিগের সাথে উইন্ডোজ আইআইএস সার্ভারের জন্য নীচের উদাহরণ কোডটি দেখুন:

<system.webServer>
<security>
    <requestFiltering>
        <requestLimits maxQueryString="1024" maxUrl="2048">
           <headerLimits>
              <add header="Content-type" sizeLimit="100" />
           </headerLimits>
        </requestLimits>
     </requestFiltering>
</security>
</system.webServer>

এটিও মেশিন.কনফিগ ব্যবহার করে একটি সার্ভার স্তরে কাজ করবে।

দ্রষ্টব্য: ক্যোরিয় স্ট্রিং এবং ইউআরএল দৈর্ঘ্য সীমাবদ্ধ করা স্লো HTTP রিকুয়েস্টেসস DDOS আক্রমণকে পুরোপুরি আটকাতে পারে না তবে এটি প্রতিরোধের জন্য আপনি নিতে পারেন এমন এক পদক্ষেপ।


2
এবং এখন আমার একটি কারণ রয়েছে যাতে আমি ব্যাকএন্ড ইঞ্জিনিয়ারদের বলতে পারি যে আমরা জিইটি অনুরোধের ক্যোয়ারীপ্যারামে একশত ৩ character অক্ষরের ইউআইডি'র তালিকা গ্রহণ করব না। ধন্যবাদ!
Mordred

1

বিভিন্ন ওয়েব স্ট্যাকগুলি বিভিন্ন দৈর্ঘ্যের http- অনুরোধগুলিকে সমর্থন করে। আমি অভিজ্ঞতা থেকে জানি যে সাফারির প্রথম দিকের স্ট্যাকগুলি কেবল 4000 টি অক্ষরকে সমর্থন করেছিল এবং এইভাবে ইউএসএল-স্টেটের কারণে এএসপিডনেট পৃষ্ঠাগুলি পরিচালনা করতে অসুবিধা হয়েছিল। এটি এমনকি পোস্টের জন্যও তাই আপনাকে ব্রাউজারটি পরীক্ষা করে দেখতে হবে এবং স্ট্যাকের সীমাটি কী। আমি মনে করি আপনি এমনকি নতুন ব্রাউজারগুলিতেও সীমাতে পৌঁছে যেতে পারেন। আমি মনে করতে পারি না তবে তাদের মধ্যে একটির (আই 6 I আমি মনে করি) এর 16-বিটের সীমা ছিল, 32,768 বা অন্য কিছু।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.