আইটিএস 8.5 এ এইচটিটিপি বিকল্প বিকল্প পদ্ধতি অনুমোদিত পদ্ধতিগুলি কীভাবে নির্ধারণ করে?


8

আমি TRACEআইআইএস 8.5 (উইন্ডোজ সার্ভার 2012 আর 2 ডেটাসেন্টার) এ আমার ওয়েবসাইটটি থেকে পদ্ধতিটি সরিয়ে ফেলার চেষ্টা করছি । আমি নীচের মত অনুরোধ ফিল্টারিং ব্যবহার করে এটি বাস্তবায়ন করেছি:

<system.webServer>
  <security>
    <requestFiltering>
      <verbs allowUnlisted="true">
        <add verb="TRACE" allowed="false" />
      </verbs>
    </requestFiltering>
  </security>
</system.webServer>

বাধা দেয় TRACEঅনুরোধ, কিন্তু যদি আমি একজন পাঠাতে OPTIONSঅনুরোধ, এটা এখনও আউট তালিকা TRACEমধ্যে Allowএবং Publicহেডার। আমি রিসেট আইআইএস করেছি, কিন্তু না পেতে পারেন TRACEআউট OPTIONS। আমি অস্বীকার করতে চাই না OPTIONS

এটি সমস্যাযুক্ত কারণ এটি মনে হয় যে কোনও কমপ্লায়েন্স স্ক্যানটি আমরা OPTIONSতার নির্দেশক হিসাবে TRACEএটি সক্ষম হিসাবে ব্যবহার করে মেনে চলি । আমি জানি এটি সঠিক নয়, তবে এটি আমার মাপকাঠির মাপকাঠি।

উপলব্ধ পদ্ধতিগুলি সঠিকভাবে রিপোর্ট করার জন্য বিকল্পগুলি পাওয়ার কোনও উপায় আছে কি?

উত্তর:


6

আকর্ষণীয় প্রশ্ন। response headersআইআইএস থেকে অপসারণের সমস্ত পদ্ধতিগুলি শিরোনাম Allowএবং Publicশিরোলেখীদের পক্ষে কাজ করে না বলে মনে হয় , একটি OPTIONSঅনুরোধ সর্বদা ফিরে আসে:

Allow:  OPTIONS, TRACE, GET, HEAD, POST
Public: OPTIONS, TRACE, GET, HEAD, POST

সার্ভার আসলে যা অনুমতি দেয় তা নির্বিশেষে।

আইআইএস-এর সমস্ত অনুরোধগুলি মডিউল দ্বারা পরিচালিত হয়, OPTIONSঅনুরোধগুলি হ্যান্ডেল করা হয় ProtocolSupportModuleযা প্রয়োজনীয় নয় এবং এটি বেশ বোবা বলে মনে হচ্ছে।

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

খুলুন:

%SystemRoot%\System32\inetsrv\config\applicationHost.config

এবং OPTIONSVerbHandlerসেই লাইনের মন্তব্যের জন্য অনুসন্ধান করুন এবং আপনি এটির উপরে থাকাকালীন উপরেরটিও ( TRACEVerbHandler)। এখন একটি নতুন নোড যুক্ত করুন:

<add name="MyOPTIONSVerbHandler" path="*" verb="OPTIONS" modules="StaticFileModule" requireAccess="None" />

পুরো ব্লকটি দেখতে এইরকম হওয়া উচিত:

    <!--  <add name="TRACEVerbHandler" path="*" verb="TRACE" modules="ProtocolSupportModule" requireAccess="None" /> 
          <add name="OPTIONSVerbHandler" path="*" verb="OPTIONS" modules="ProtocolSupportModule" requireAccess="None" /> -->
          <add name="MyOPTIONSVerbHandler" path="*" verb="OPTIONS" modules="StaticFileModule" requireAccess="None" /> 

এখন স্ট্যাটিকফাইমডিউড OPTIONSঅনুরোধগুলি প্রক্রিয়া করবে তবে এটি কোনও সামগ্রী ফেরত দেবে না।

আপনি যদি এখন OPTIONSসার্ভারে একটি অনুরোধ করেন তবে আপনি একটিও শিরোনাম পাবেন Allowনা Public, আপনি এগুলিকে সহজেই ওয়েবকনফাইগে যুক্ত করতে পারেন

<system.webServer>
 <httpProtocol>
      <customHeaders>
          <add name="Allow"  value="GET,POST,HEAD" />  
          <add name="Public" value="GET,POST,HEAD" />
      </customHeaders>
  </httpProtocol>        
</system.webServer>

এখন আপনার OPTIONSঅনুরোধগুলি যেমন প্রয়োজন তেমন কাজ করে তবে এই অতিরিক্ত শিরোনামগুলি এমন কোনও GETবা POSTঅনুরোধের সাথে প্রেরণ করা হয় যা আমার মনে হয় এখনও বৈধ HTTP।

আপনি যদি OPTIONSঅনুরোধগুলির জন্য কেবল এই শিরোলেখ ব্যবহার করতে চান তবে আপনি একটি সহজ HTTP মডিউল লিখতে পারেন যা এই শিরোনামগুলি সেট করে এবং আমি উপরে ব্যবহৃত স্ট্যাটিকফাইলে মডুলের পরিবর্তে এটি ব্যবহার করতে পারি।


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