[অনুমোদন] ব্যবহার করার সময় অনুরোধটি কনফিগার করা ম্যাক্সকুয়েস্ট্রি স্ট্রিং লেংথ ছাড়িয়েছে


121

এখানে চিত্র বর্ণনা লিখুন
আমার সি # তে একটি এমভিসি 3 সাইট রয়েছে, আমার একটি নির্দিষ্ট ভিউ আছে জাভাস্ক্রিপ্ট ফাংশন থেকে ক্যোয়ারী প্যারামিটারগুলি খাওয়ানো হচ্ছে, ফাংশনটি সাইটে সাইটে পুনঃনির্দেশ করে

window.location.href = "../ActionName?" + কোয়েরি_স্ট্রিং;

ক্যোরি_স্ট্রিং জাভাস্ক্রিপ্ট ফাংশন দ্বারা নির্মিত গতিশীল ক্যোয়ারী প্যারামিটার স্ট্রিং হচ্ছে।

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

আমি ক্রিয়া পদ্ধতির সাথে [অনুমোদন] না দেওয়ার আগ পর্যন্ত পুরো জিনিসটি ঠিকঠাক কাজ করে। এটি যদি স্থানে থাকে তবে বিরতি দেয়, ছাড়াই সূক্ষ্ম কাজ করে এবং [অনুমোদিত] অন্যান্য সমস্ত পদ্ধতিতে সূক্ষ্মভাবে কাজ করে।

এই ক্ষেত্রে পুরো ইউআরএল 966 অক্ষর দীর্ঘ, গবেষণার পরে মনে হয় ম্যাক্সকুরি স্ট্রিংলেন্থ মানটি ডিফল্ট অনুসারে 2048 হয় তবে টাইপ পূর্ণসংখ্যার যে কোনও মানতেই ওভাররাইড করা যায়, তাই কেবল গ্রিনের জন্য আমি যুক্ত করেছি

<security>
  <requestFiltering>
    <requestLimits maxQueryString="2048"></requestLimits>
  </requestFiltering>
</security>

কী এর অধীনে ওয়েব কনফিগারেশন ফাইলের কী।

কোনও আনন্দ নেই, তাই আমি হাস্যকর হয়েছি এবং এটি 4096 করেছি, এখনও কোনও আনন্দ নেই।

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

ভিএস 2010 প্রো এসপি 1


আপনি প্রাপ্ত বিশদ ত্রুটি বার্তাটি দয়া করে যুক্ত করুন।
কাউন্সেলরবেন

উত্তর:


70

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

এমএসডিএন-এর মতে, ওয়েবকনফাইগ-এ ম্যাক্সকুয়েস্ট্রিংলেন্থ রিসেট করতে সংশোধন করার সঠিক উপাদানটি <httpRuntime>উপাদানটির অভ্যন্তর <system.web>উপাদান, এইচটিসিআরটাইম এলিমেন্ট (এএসপি.নেট সেটিংস স্কিমা) দেখুন । সেই উপাদানটি সংশোধন করার চেষ্টা করুন।


1
হায় আফসোস, এটিকে সঠিক জায়গায় রেখে দেওয়াটাই কৌশল বলে মনে হচ্ছে, যথেষ্ট পরিমাণে ইন্টেলিজেন্স অন্তর্নিহিত করা আমাকে একই স্থানে গাইড করে যেখানে আমি মূলত এটি পোস্ট করেছি।
সাবের

8
এছাড়াও জানা ভাল এই PARAM, সর্বোচ্চ মান 2097151 হয় - প্রথম আমি Int32.MaxValue ব্যবহার করার চেষ্টা, কিন্তু ব্যতিক্রম যে রানটাইম নিক্ষিপ্ত হয়েছিল 0 এবং 2097151. এর মধ্যে একটি মান ব্যবহার করতে আমাকে ইশারা
TimDog


1
আমি বিশ্বাস করি যে আপনি এই পারমটির সর্বোচ্চ মান 2097151 এ সেট করতে পারলেও, এমন অন্যান্য প্যারাম রয়েছে যা সর্বাধিক ক্যোয়ারী দৈর্ঘ্যের উপর নির্ভর করে affect আমার কাছে এই প্রশ্নের সর্বোচ্চের চেয়ে একটি সংক্ষিপ্তসার স্ট্রিং ছিল যা গ্রহণ করা হয়নি - এটি 3,393 অক্ষর দীর্ঘ। আরেকটি ক্যোয়ারী যা 3,200 অক্ষর দীর্ঘ ছিল কাজ করে।
করুনহিজার্ড 1234

@ markthewizard1234: একমত: আমি খনি 2048 থেকে 4096. এই বৃদ্ধি হয়েছে করেনি কিছু প্রভাব ফেলেছে সুদীর্ঘ কোয়েরি স্ট্রিং জন্য 404.something আর প্রদর্শিত হবে না সঙ্গে মূল ত্রুটি বার্তা হিসাবে। কিন্তু এখন, 400 কোড সহ আরও একটি ত্রুটি বার্তা ফিরে এসেছে, এটি একটি ওভারলং কোয়েরি স্ট্রিংকেও নির্দেশ করে।
বা ম্যাপার

212

web.configআপনার প্রকল্পের মূলটি system.webনোডের নীচে:

<system.web>
    <httpRuntime maxUrlLength="10999" maxQueryStringLength="2097151" />
...

তদতিরিক্ত, আমাকে system.webServerনোডের নীচে এটি যুক্ত করতে হয়েছিল বা আমার দীর্ঘ জিজ্ঞাসার স্ট্রিংগুলির জন্য সুরক্ষা ত্রুটি পেয়েছি:

<system.webServer>
    <security>
      <requestFiltering>
        <requestLimits maxUrl="10999" maxQueryString="2097151" />
      </requestFiltering>
    </security>
...

1
এটি খোলার ফলে সুরক্ষার কোনও গুরুতর ত্রুটি? 2097151 এ ম্যাক্সুরল এবং ম্যাককোয়ারি সেট করার ক্ষেত্রে কী নেতিবাচকতা রয়েছে?
ব্রায়ান

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

আমি অনুমান করি একটি সম্ভাব্য ডস দুর্বলতা আছে কিন্তু এটি আপনি কীভাবে অনুরোধটিকে বাস্তবে পরিচালনা করেন তার উপর নির্ভর করে। এক অনুরোধে 100 জন ব্যবহারকারী যুক্ত করার চেষ্টা করার সময় আমি এতে ছুটে এসেছি। যাইহোক আমি ঘটতে চাই এমন কিছু নয়।
মার্টিন

4
এটি এমভিসি 4 প্রকল্পে আমার একই সমস্যা হওয়ায় এটি অবিলম্বে আমার সমস্যাটি সমাধান করেছে। উপরের উভয়টি যুক্ত করা আমার ত্রুটিটি সমাধান করেছে। তোমাকে অনেক ধন্যবাদ!!
এড ডিগাগেন

3
মনে রাখবেন যে maxQueryStringমধ্যে দৈর্ঘ্য হল বাইট 4294967295 একটি সর্বোচ্চ মান uint এবং maxQueryStringLengthমধ্যে দৈর্ঘ্য হল অক্ষর int হিসাবে কিন্তু 0-2097151 একটি পরিসীমা সঙ্গে।
মার্জ করুন

5

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

1. Click on the website in IIS
2. Double Click on Authentication under IIS
3. Enable Anonymous Authentication

আমি এটিকে অক্ষম করেছিলাম কারণ আমরা আমাদের নিজস্ব আথ ব্যবহার করছিলাম তবে এটি একই সমস্যার দিকে পরিচালিত করে এবং স্বীকৃত উত্তরটি কোনওভাবেই সহায়তা করে নি।


4

আমার এই ত্রুটিটি ডেটাবেলস.net ব্যবহার করে আছে

আমি ডেটাবেল () এর বৈশিষ্ট্যগুলিতে ডিফল্ট অজ্যাক্সটি POST এ যেতে পরিবর্তন স্থির করেছি

"ajax": {
        "url": "../ControllerName/MethodJson",
        "type": "POST"
    },

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