সার্ভার রেসপন্স শিরোনাম IIS7 সরান


107

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

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


উত্তর:


111

এটি আপনার Global.asax.cs এ যুক্ত করুন:

protected void Application_PreSendRequestHeaders()
{
    Response.Headers.Remove("Server");
    Response.Headers.Remove("X-AspNet-Version");
    Response.Headers.Remove("X-AspNetMvc-Version");
}

11
জানেন না কেন এই
মডিএলের উত্তরটির

2
আপনি NullReferenceExceptionযদি নির্ভর করেন তবে আপনাকে ক্যাসিনিতে পেয়ে যাবেন HttpContext.Currentএই ব্লগ পোস্টটি দেখায় যে কীভাবে ক্যাসিনি সমর্থনকে ভঙ্গ করা এড়ানো উচিত, যদি তা আপনার পক্ষে গুরুত্বপূর্ণ।
ওভেন ব্ল্যাকার

49
@ সাইকোড্যাড এটি কেবল এসপি.এনইটি অনুরোধের জন্য কাজ করে, .css এবং .js এর মতো স্থির ফাইলগুলির জন্য নয়
ম্যাক্স টোরো

1
এমভিসি শিরোনাম থেকে মুক্তি পাওয়ার জন্য আপনি এই এমভিসিএইচএনডেল.ডিজিবলএমভিসিআরএসপোনসহিডার করতে পারেন = সত্য;
প্রোভেগা

7
PreSendRequestHeadersযে ক্লাসটি প্রয়োগ করে IHttpModuleবা ব্যবহার করে এটি কোনও ভাল ধারণা নয় Global.asax। আমি চাপ লোডের অধীনে সার্ভারে অ্যাপ্লিকেশনটি হিমশীতল দেখেছি। BeginRequestঘটনা প্রতিক্রিয়া শীর্ষক পরিবর্তন করতে কাজ করা উচিত। Hanselman.com/blog/ChecklistWhatNOTToDoInASPNET.aspx দেখুন ।
দিমিত্রি এস

77

আইআইএস In এ আপনাকে একটি এইচটিটিপি মডিউল ব্যবহার করতে হবে। ভিএসে নিম্নলিখিত শ্রেণীর পাঠাগার হিসাবে তৈরি করুন:

namespace StrongNamespace.HttpModules
{
  public class CustomHeaderModule : IHttpModule
  { 
    public void Init(HttpApplication context)
    {
      context.PreSendRequestHeaders += OnPreSendRequestHeaders;
    } 

    public void Dispose() { } 

    void OnPreSendRequestHeaders(object sender, EventArgs e)
    {
      HttpContext.Current.Response.Headers.Set("Server", "Box of Bolts");
    }
  }
}

তারপরে আপনার ওয়েবকনফিগটিতে নিম্নলিখিতগুলি যুক্ত করুন, বা আপনি এটি আইআইএসের মধ্যে কনফিগার করুন (যদি আপনি আইআইএসের মধ্যে কনফিগার করেন তবে সমাবেশ অবশ্যই জিএসি তে থাকতে হবে)।

<configuration>
  <system.webServer>
    <modules>
      <add name="CustomHeaderModule"
       type="StrongNamespace.HttpModules.CustomHeaderModule" />
    </modules>
  </system.webServer>
</configuration>

দুর্দান্ত, আমি আমার সার্ভার ফার্ম জুড়ে ইটাগ শিরোলেখ অপসারণ করার জন্য এটি টুইট করতে পারি।
ডিভস্টফ

এটি ক্যাসিনিতে একটি রানটাইম ত্রুটির কারণ ... / এএসপি ডট নেট সার্ভার
দ্য ক্রিক

2
@UpTheCreek এএসপি.নেট দেব সার্ভার (ক্যাসিনি) সেই কোডটি পছন্দ করবে না; এই ব্লগ পোস্টে আপনি যে চেক করতে হবে - যদিও, এটি একটি সমাধান আছে HttpApplication, HttpRequest, HttpContext, এবং HttpResponseহয় না nullযে, সেইসাথে পরীক্ষণ HttpRequest.IsLocalহয় false
ওভেন ব্ল্যাকার

2
শিরোনামে সংশোধন করার ফলে এইচটিপিপ্যাচমডিউল সমস্যা তৈরিPreSendRequestHeaders করতে পারে , PostReleaseRequestStateতার পরিবর্তে আপনার মতো কিছু ব্যবহার করা উচিত ।
এরিক এইচ

5
আইআইএস স্থির ফাইলগুলির জন্য 304 সংশোধিত শিরোনাম (সিএসএস / কম / চিত্র / ইত্যাদি) প্রেরণ করার সময় মডিউলটি চালু করা হয় না কারণ এটি এএসপি.নেট পাইপলাইনে পৌঁছায় না, তাই এই পরিস্থিতিতে সার্ভার: মাইক্রোসফ্ট আইআইএস / 7.5 এখনও রেন্ডার করা হয়েছে
জানো

42

কনফিগারেশন বিভাগে <configuration>IS the আউটবাউন্ড বিধি যুক্ত করুন: আইআইএসের জন্য ইউআরএল পুনর্লিখন মডিউল সংস্করণ 2.0 (আরআরলিউইট) সক্ষম করা হয়েছে <system.webServer>With<rewrite>

<outboundRules>
  <rule name="Remove RESPONSE_Server" >
    <match serverVariable="RESPONSE_Server" pattern=".+" />
    <action type="Rewrite" value="" />
  </rule>
</outboundRules>

11
মনে রাখবেন যে এটি কেবল সার্ভার শিরোনাম ফাঁকা করে, এটি এটি সরিয়ে দেয় না।
নিক ইভান্স

অজ্ঞতার জন্য দুঃখিত তবে আমি কোন অংশে এটি যুক্ত করব ?! আমি এটি <system.webServer> এর ভিতরে যুক্ত করার চেষ্টা করেছি
সুব্রমনিয়ান

1
ধন্যবাদ! আইআইএস 8.5 এ কাজ করে, এটি এত সহজ। আমার কাছে কোনও পাঠ্য সম্পাদক নেই তবে আপনি সহজেই জিইআইআই ব্যবহার করতে পারেন। নামটি কেবলমাত্র সার্ভার নয়, RESPONSE_Server হওয়া উচিত (এটি যেখানে আমি প্রথমে ব্যর্থ হয়েছিলাম)।
লুই ম্যাথিজসেন

এটি যদি আপনি একটি নন-এসএসপি. নেট অ্যাপ্লিকেশন পেয়ে থাকেন তবে এটি যথেষ্ট ভাল কারণ আপনি উল্লিখিত কোডগুলি সহ সার্ভার শিরোলেখ অপসারণ করতে পারবেন না
মেশাবি

4
@ ভিগনেশ এটি কিছু UrlRewrit কনফিগারেশন সাবনোড। এগুলি আপনাকে একটি rewriteনোডের নীচে রাখতে হবে system.webServer। সাবধান, যদি urlRewrite সার্ভারে ইনস্টল না করা থাকে তবে এটি আপনার সাইটটি ক্রাশ করবে। এবং আপনি এই কনফিগার নোডগুলি কীভাবে লিখছেন তা পরীক্ষা করার জন্য প্রথমে IIS কনফিগারেশন কনসোলটি আরও ভালভাবে ব্যবহার করতে চাই।
ফ্রেডেরিক

36

স্কট মিচেল অপ্রয়োজনীয় শিরোলেখ অপসারণ করার জন্য একটি ব্লগ পোস্ট সমাধান সরবরাহ করে ।

যেমন ইতিমধ্যে অন্যান্য উত্তরে এখানে বলা হয়েছে, Serverশিরোনামের জন্য, এখানে আইআইএস 10+ এর জন্য http মডিউল সমাধান , বা একটি ওয়েবকনফিগ সমাধান রয়েছে বা আপনি এটি ফাঁকা করার পরিবর্তে ইউআরএলআরয়েট ব্যবহার করতে পারেন ।

একটি আপ-টু-ডেট (আইআইএস 10 +) সেটআপের সর্বাধিক ব্যবহারিক সমাধানটি removeServerHeaderওয়েবকনফাইগটিতে ব্যবহার করছে:

<system.webServer>
  ...
  <security>
    <requestFiltering removeServerHeader="true" />
  </security>
  ...
</system.webServer>

জন্য X-AspNet-Versionএবং X-AspNetMvc-Versionকেবল তাদের এ সব উৎপাদিত: তিনি প্রতিটি প্রতিক্রিয়া উপর সরাবার চেয়ে ভাল উপায় প্রদান করে।

ওয়েবকনফিগে enableVersionHeaderঅক্ষম করার জন্য ব্যবহার করুনX-AspNet-Version

<system.web>
  ...
  <httpRuntime enableVersionHeader="false" />
  ...
</system.web>

ব্যবহারের MvcHandler.DisableMvcResponseHeaderনেট Application_Start ইভেন্টে অক্ষম করারX-AspNetMvc-Version

MvcHandler.DisableMvcResponseHeader = true;

এবং পরিশেষে, আইআইএস কনফিগারেশনে X-Powered-Byওয়েবকনফিগের কাস্টম শিরোনামে সরান ।

<system.webServer>
  ...
  <httpProtocol>
    <customHeaders>
      <remove name="X-Powered-By" />
    </customHeaders>
  </httpProtocol>
  ...
</system.webServer>

সাবধান, আপনার যদি এআরআর (অ্যাপ্লিকেশন অনুরোধ রাউটিং) থাকে তবে এটি নিজস্ব নিজস্বও যুক্ত X-Powered-Byকরবে, যা কাস্টম শিরোনাম সেটিংস দ্বারা সরানো হবে না। এটি আইআইএস ম্যানেজারের মাধ্যমে অপসারণ করতে হবে, আইআইএস মূলটিতে সম্পাদক কনফিগারেশন (কোনও সাইটে নয়): system.webServer/proxyনোডে যান এবং সেট হয়ে arrResponseHeaderযান false। একটি পরে IISReset, এটি আমলে নেওয়া হয়।
(আমি এটি এখানে পেয়েছি , এই পোস্টটি বাদে পুরানো আইআইএস 6.0 বিষয়গুলি কনফিগার করার পদ্ধতি way

ভুলে যাবেন না যে অ্যাপ্লিকেশন কোড দ্বারা সমাধান স্থিতিশীল সামগ্রীতে উত্পাদিত শিরোলেখের ডিফল্টরূপে প্রয়োগ হয় না (এটি runAllManagedModulesForAllRequestsপরিবর্তন করার জন্য আপনি সক্রিয় করতে পারেন , তবে এটি সমস্ত অনুরোধগুলি চালানোর জন্য কারণ হিসাবে তৈরি করে et নেট পাইপলাইন)। এটি X-AspNetMvc-Versionস্ট্যাটিক সামগ্রীতে যুক্ত না হওয়ার কারণে এটি কোনও সমস্যা নয় (কমপক্ষে স্থির অনুরোধটি। নেট পাইপলাইনে চালিত না হলে)।

পার্শ্ব নোট: যখন লক্ষ্যটি ব্যবহৃত প্রযুক্তিটি ক্লোক করা, তখন আপনার মানকও পরিবর্তন করা উচিত et নেট কুকির নামগুলি ( .ASPXAUTHযদি ফর্ম লেখক সক্রিয় হয় ( যদি ওয়েলকনফিগে ট্যাগটিতে nameঅ্যাট্রিবিউট ব্যবহার করুন forms)), ASP.NET_SessionId( ট্যাগের <sessionState cookieName="yourName" />অধীনে ওয়েবকনফিগ ব্যবহার করুন system.web), __RequestVerificationToken(এটি পরিবর্তন করুন ) কোড সহ AntiForgeryConfig.CookieName, তবে দুর্ভাগ্যক্রমে এই সিস্টেমটি এইচটিএমএল উত্পন্ন করে এমন লুকানো ইনপুটটিতে প্রয়োগ হয় না))।


18

প্রকৃতপক্ষে কোডেড মডিউলগুলি এবং গ্লোবাল.এক্স্যাক্স উদাহরণগুলি কেবল বৈধ অনুরোধগুলির জন্য কাজ করে।

উদাহরণস্বরূপ, আপনার ইউআরএলটির শেষে <যোগ করুন এবং আপনি একটি "খারাপ অনুরোধ" পৃষ্ঠা পাবেন যা এখনও সার্ভার শিরোলেখ প্রকাশ করে। অনেক বিকাশকারী এটিকে উপেক্ষা করে।

প্রদর্শিত রেজিস্ট্রি সেটিংসও কাজ করে না। ইউআরএলস্ক্যান হ'ল "সার্ভার" শিরোনাম সরানোর একমাত্র উপায় (কমপক্ষে আইআইএস 7.5-এ)।


এটি কোডেড মডিউলটির সাথে আমার জন্য কাজ করছে (ওয়েবকনফিগে যুক্ত হয়েছে) এমনকি একটি খারাপ অনুরোধেও;) গ্লোবাল.এক্স্যাক্সে এটি আসলে কাজ করছে না (যেমন স্ট্যাটিক ফাইল ইত্যাদি)
কেপসিআর

আশা করি আপনার এখনও অনুরোধ বৈধতা চালু আছে।
ড্যান ওয়ারে 13

1
আইআইএস 8+ এর জন্য কারও কাছে কি urlscan এর বিকল্প রয়েছে?
বীরত্ববাদী

: একটা কাজ IIS10 + + অন্তত সমাধান stackoverflow.com/a/53222967/1671558
ইলিয়া Chernomordik

16

অথবা ওয়েবকনফিগ এ যুক্ত করুন:

<system.webServer>
    <httpProtocol>
        <customHeaders>
            <remove name="X-AspNet-Version" />
            <remove name="X-AspNetMvc-Version" />
            <remove name="X-Powered-By" />
            <!-- <remove name="Server" />  this one doesn't work -->
        </customHeaders>
    </httpProtocol>
</system.webServer>

3
এই পদ্ধতিটি 'সার্ভার' শিরোনামটি সরায় না। অন্যদের সরানো হয়।
খাঁটি.ক্রোম

আপনি সার্ভার স্তরের রেসপন্স শিরোনাম কনফিগারেশনে এক্স-পাওয়ার-বাই থেকে মুক্তি পেতে পারেন।
স্নোবার্ট

1
আমি জানি না এমন কোনও মামলা রয়েছে যেখানে এই পথটি সরানো হয় X-AspNet-Versionএবং X-AspNetMvc-Versionশিরোনাম। আমি যা জানি এটি এইভাবে সর্বদা কাজ করে না (যদি এটি কখনও কাজ করে)। এগুলি অপসারণের আরও নির্ভরযোগ্য উপায়ের জন্য @ ফ্রেডেরিক উত্তর দেখুন।
দ্য ব্লুস্কি

: এখন IIS10 + + একটি উপায় সার্ভার হেডার অপসারণ করা হয় stackoverflow.com/a/53222946/1671558
ইলিয়া Chernomordik

14

এই web.configসেটআপটি এএসপি.নেট প্রতিক্রিয়া (কমপক্ষে আইআইএস 10 থেকে শুরু করে) থেকে সমস্ত অপ্রয়োজনীয় শিরোলেখ অপসারণ করে

<!--Removes version headers from response -->
<httpRuntime enableVersionHeader="false" />

<httpProtocol>
  <customHeaders>
    <!--Removes X-Powered-By header from response -->
    <clear />
  </customHeaders>
</httpProtocol>

<security>
  <!--Removes Server header from response-->
  <requestFiltering removeServerHeader ="true" />
</security>

দয়া করে নোট করুন যে এটি "অ্যাপ্লিকেশন" এর জন্য সমস্ত শিরোনামকে আড়াল করে, অন্যান্য সমস্ত পদ্ধতির মতো। যদি আপনি উদাহরণস্বরূপ কোনও ডিফল্ট পৃষ্ঠা বা আইআইএস দ্বারা তৈরি হওয়া ত্রুটি পৃষ্ঠায় পৌঁছায় বা এএসপি.এনইটি আপনার আবেদনের বাইরে এই নিয়মগুলি প্রযোজ্য হবে না। সুতরাং আদর্শগতভাবে তাদের আইআইএসের মূল স্তরে থাকা উচিত এবং এই চটকদার আইআইএসে কিছু ত্রুটি প্রতিক্রিয়া থাকতে পারে।

পিএস আইআইএস 10 এ একটি বাগ রয়েছে যা এটি কখনও কখনও সঠিক কনফিগারেশনের মাধ্যমে এমনকি সার্ভার শিরোনামকে দেখায়। এটি এখনই ঠিক করা উচিত, তবে আইআইএস / উইন্ডোজ আপডেট করতে হবে।


12

ছাড়াও URL টি লেখা উত্তর , এখানে জন্য সম্পূর্ণ এক্সএমএল হয়web.config

<system.webServer>
  <rewrite>
    <outboundRules>
      <rule name="Remove RESPONSE_Server" >
        <match serverVariable="RESPONSE_Server" pattern=".+" />
        <action type="Rewrite" value="Company name" />
      </rule>
    </outboundRules>
  </rewrite>
</system.webServer>

ইউআরএল পুনর্লিখন


এটি কি হ্যাকার থেকে সমস্ত আইআইএস এবং এএসপি সংস্করণগুলি সরিয়ে দেয়
এগ্রি

1
উপরের ফিক্সটি ওয়েব পৃষ্ঠাগুলির জন্য সঠিকভাবে কাজ করছে images তবে চিত্র / আইকনগুলির জন্য যদি 500 টি অভ্যন্তরীণ সার্ভার ত্রুটি দেখা দেয় তবে এটি সার্ভারটি দেখাচ্ছে: মাইক্রোসফ্ট-আইআইএস / 7.5 মানটির পরিবর্তে you আপনি দয়া করে আমাকে এই বিষয়ে সহায়তা করতে পারেন
রেভিথেজেগ

11

মুছে ফেলার জন্য Server:হেডার, এখানে যান Global.asax/ এটি তৈরি Application_PreSendRequestHeadersইভেন্ট এবং হিসাবে (ধন্যবাদ অনুসরণ একটি লাইন যোগ বি কে এবং এই ব্লগে এই কাসিনিজের / স্থানীয় দেব উপর খেলাফ করেন না):

protected void Application_PreSendRequestHeaders(object sender, EventArgs e)
{
    // Remove the "Server" HTTP Header from response
    HttpApplication app = sender as HttpApplication;
    if (null != app && null != app.Request && !app.Request.IsLocal &&
        null != app.Context && null != app.Context.Response)
    {
        NameValueCollection headers = app.Context.Response.Headers;
        if (null != headers)
        {
            headers.Remove("Server");
        }
    }
}

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


9

আপনি যদি কেবল শিরোনামটি সরাতে চান তবে আপনি লুকিফারের উত্তরের একটি সংক্ষিপ্ত সংস্করণ ব্যবহার করতে পারেন:

using System.Web;

namespace Site
{
    public sealed class HideServerHeaderModule : IHttpModule
    {
        public void Dispose() { }

        public void Init(HttpApplication context)
        {
            context.PreSendRequestHeaders +=
            (sender, e) => HttpContext.Current.Response.Headers.Remove("Server");
        }
    }
}

এবং তারপরে Web.config:

<system.webServer>
  <modules runAllManagedModulesForAllRequests="true">
    <add name="CustomHeaderModule" type="Site.HideServerHeaderModule" />
  </modules>
</system.webServer>

1
এটি সবচেয়ে উপযুক্ত কারণ সিএসএস / জেএসের মতো সংস্থাগুলিতে সার্ভার শিরোনাম থাকবে না, এটি কনফিগারেশন ছাড়াই সার্ভার থেকে সার্ভারে পোর্ট করে এবং সার্ভারের প্রতিক্রিয়া শিরোনাম খালি খালি থাকে না, এটি প্রেরণ করা হবে না।
অ্যাডাম ক্যাভিনিস

আমি মন্তব্যগুলি দেখেছি যে রানআল ম্যানেজডমডিউলসফোরআলরেক্সুইটস = "সত্য" আপনার অ্যাপ্লিকেশনটিকে ধীর করে দেবে এবং এটির প্রস্তাব দেওয়া হয় না। পরিবর্তে স্থিতিশীল ফাইলগুলির জন্যও সার্ভারের মান সাফ করতে একটি urlrewrite মডিউল আউটবাউন্ডআরুলস ব্যবহার করতে পারে। britishdeveloper.co.uk/2010/06/...
জুড়ী

5

সেটিং ব্যবহার করে দেখুন HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\DisableServerHeaderএকটি রেজিস্ট্রি এন্ট্রি REG_DWORDএর 1


আমাদের সার্ভার ফার্মের সাথে একটি বিশৃঙ্খল পরিস্থিতিতে ছড়িয়ে পড়ে যেখানে এই রেজিস্ট্রি সেটিংটি কেবলমাত্র আইআইএস 6 এবং আইআইএস 7, উভয়ের জন্য আমরা ব্যবহার করছি ওএস এর সমস্ত (ডাব্লু 2 কে 8, ডাব্লু 2 কে 3) জুড়ে কাজ করে এমন একমাত্র পরিবর্তন বলে মনে হচ্ছে।
জেরুয়েট

2
হতাশাজনকভাবে, ভার্চুয়াল মেশিনটি রিবুট করার পরেও এটি আমার পক্ষে কোনও পার্থক্য আনছে না। আমরা উইন্ডোজ সার্ভার 2008 আর 2 স্ট্যান্ডার্ড, "সংস্করণ 6.1 (7601 তৈরি করুন: পরিষেবা প্যাক 1)" আইআইএস 7.5 চালিয়ে যাচ্ছি। একইভাবে, আমার OnPreSendRequestHeadersইভেন্ট হ্যান্ডলার (উপরে দেখুন) কোনও কারণে কোনও দিন গুলি চালায় না।
ওভেন ব্ল্যাকার

3
দুর্ভাগ্যক্রমে রেজিস্ট্রি কীটি আইআইএস 7.5
এন্ড্রু সিসনটোস


2

নিম্নলিখিত আপ eddiegroves 'উত্তর , URLScan সংস্করণ উপর নির্ভর করে, আপনি যদি এর পরিবর্তে পছন্দ করেন RemoveServerHeader=1অধীনে [options]

আমি নিশ্চিত নই যে URL টি স্ক্যানের কোন সংস্করণে এই বিকল্পটি যুক্ত হয়েছিল তবে এটি 2.5 সংস্করণে এবং তার পরে পাওয়া গেছে।


2

আমি একটি নিবন্ধ পেয়েছি যা ব্যাখ্যা করে যে কেন আমাদের রেজিস্ট্রি সম্পাদনা এবং ইউআইএস-এ এটি সঠিকভাবে সেট আপ করার জন্য একটি সরঞ্জাম যেমন উরলস্কান উভয়ই ব্যবহার করতে হবে। আমি এটি আমাদের সার্ভারগুলিতে অনুসরণ করেছি এবং এটি কাজ করে: http://blogs.msdn.com/b/varunm/archive/2013/04/23/remove-unwanted-http-response-headers.aspx । আপনি যদি কেবল আরলস্ক্যান ব্যবহার করেন তবে রেজিস্ট্রি পরিবর্তন না করেন, আপনি ওয়ার্ল্ড ওয়াইড প্রকাশনা পরিষেবা বন্ধ করার সময়, আপনার সার্ভারটি HTTP.sys ফাইল থেকে সার্ভারের HTTP প্রতিক্রিয়া ফিরিয়ে দেবে। এছাড়াও, এখানে আরলস্ক্যান সরঞ্জাম ব্যবহারের সাধারণ পিটফাল রয়েছে: http://msdn.microsoft.com/en-us/library/ff648552.aspx#ht_urlscan_008


2
স্ট্যাক ওভারফ্লোতে আপনার কোড পোস্ট করুন। লিঙ্কগুলি পরিবর্তন এবং বিরতি পেতে পারে, তাই পোস্টিং কোডটি আরও অনেক সহায়ক
ব্লুন্ডারিং দার্শনিক

2

আইআইএস 10-তে আমরা ড্রয়ের পদ্ধতির অনুরূপ সমাধান ব্যবহার করি, যেমন:

using System;
using System.Web;

namespace Common.Web.Modules.Http
{
    /// <summary>
    /// Sets custom headers in all requests (e.g. "Server" header) or simply remove some.
    /// </summary>
    public class CustomHeaderModule : IHttpModule
    {
        public void Init(HttpApplication context)
        {
            context.PreSendRequestHeaders += OnPreSendRequestHeaders;
        }

        public void Dispose() { }

        /// <summary>
        /// Event handler that implements the desired behavior for the PreSendRequestHeaders event,
        /// that occurs just before ASP.NET sends HTTP headers to the client.
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void OnPreSendRequestHeaders(object sender, EventArgs e)
        {
            //HttpContext.Current.Response.Headers.Remove("Server");
            HttpContext.Current.Response.Headers.Set("Server", "MyServer");
        }
    }
}

এবং স্পষ্টতই আপনার প্রকল্প (গুলি) এর সেই dll এবং আপনি যে কনফিগারেশনগুলি চান সেগুলিতে মডিউলটি যুক্ত করুন:

<system.webServer>
    <modules>
      <!--Use http module to remove/customize IIS "Server" header-->
      <add name="CustomHeaderModule" type="Common.Web.Modules.Http.CustomHeaderModule" />
    </modules>
</system.webServer>

গুরুত্বপূর্ণ নোট 1: এই সমাধানটির জন্য একটি অ্যাপ্লিকেশন পুল প্রয়োজন যা সংহত হিসাবে সেট করা হয়েছে;

গুরুত্বপূর্ণ নোট 2: ওয়েব অ্যাপের মধ্যে সমস্ত প্রতিক্রিয়াগুলি এর দ্বারা প্রভাবিত হবে (সিএসএস এবং জেএস অন্তর্ভুক্ত);


1

আমি এটি গবেষণা করেছিলাম এবং ইউআরএল-রাইটরাইট পদ্ধতিটি ভালভাবে কাজ করে। পরিবর্তনটি স্ক্রিপ্টে কোথাও ভালভাবে খুঁজে পাওয়া যাচ্ছে না। আমি পাওয়ারশেল ভি 2 এবং এর উপরের সাথে এটি সামঞ্জস্যপূর্ণ লিখেছি এবং এটি আইআইএস 7.5 তে পরীক্ষা করেছি।

# Add Allowed Server Variable
    Add-WebConfiguration /system.webServer/rewrite/allowedServerVariables -atIndex 0 -value @{name="RESPONSE_SERVER"}
# Rule Name
    $ruleName = "Remove Server Response Header"
# Add outbound IIS Rewrite Rule
    Add-WebConfigurationProperty -pspath "iis:\" -filter "system.webServer/rewrite/outboundrules" -name "." -value @{name=$ruleName; stopProcessing='False'}
#Set Properties of newly created outbound rule 
    Set-WebConfigurationProperty -pspath "MACHINE/WEBROOT/APPHOST"  -filter "system.webServer/rewrite/outboundRules/rule[@name='$ruleName']/match" -name "serverVariable" -value "RESPONSE_SERVER"
    Set-WebConfigurationProperty -pspath "MACHINE/WEBROOT/APPHOST"  -filter "system.webServer/rewrite/outboundRules/rule[@name='$ruleName']/match" -name "pattern" -value ".*"
    Set-WebConfigurationProperty -pspath "MACHINE/WEBROOT/APPHOST"  -filter "system.webServer/rewrite/outboundRules/rule[@name='$ruleName']/action" -name "type" -value "Rewrite"


1

উপরের সংমিশ্রণে প্রস্তাবিত সমাধানটি নিম্নলিখিত পরিবর্তনগুলির সাথে আমার জন্য কাজ করেছে। এখানে আমি আমার পরিস্থিতি এবং সমাধান পোস্ট করছি।

আমার জন্য আমি নিম্নলিখিত শিরোনামগুলি সরাতে চেয়েছিলাম:

  • সার্ভার
  • এক্স-চালিত-by
  • এক্স-AspNet-সংস্করণ
  • এক্স-AspNetMvc-সংস্করণ

আমি এগুলিকে আমার গ্লোবাল.এক্সএক্সে যুক্ত করেছি:

<%@ Application Language="C#" %>
<script runat="server">
    protected void Application_PreSendRequestHeaders()
    {
        Response.Headers.Remove("Server");
        Response.Headers.Remove("X-Powered-By");
        Response.Headers.Remove("X-AspNet-Version");
        Response.Headers.Remove("X-AspNetMvc-Version");
    }
</script>

উপরের ইভেন্টটি ট্রিগার হচ্ছে না, তাই এর জন্য আমি ওয়েবকনফিগের সাথে অনুসরণ করে এটি কাজ করে।

<modules runAllManagedModulesForAllRequests="true" />

এবং সংস্করণ শিরোলেখ অপসারণ করার জন্য আমি ওয়েবকনফিগের সাথে নিম্নলিখিতগুলি যুক্ত করেছি:

<httpRuntime enableVersionHeader="false" />

ওয়েব কনফিগ পরিবর্তন:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true" />
    </system.webServer>
    <system.web>
        <httpRuntime enableVersionHeader="false" />
    </system.web>
</configuration>

আশা করি এটা সাহায্য করবে!


0

আমি এখানে সমস্ত স্টাফ চেষ্টা করেছি এবং অন্যান্য বেশ কয়েকটি অনুরূপ স্ট্যাক ওভারফ্লো থ্রেডে।

আমি কিছুটা স্তব্ধ হয়ে গেলাম কারণ কনফিগারেশনের পরিবর্তনগুলি করার পরে আমি আমার ব্রাউজারের ক্যাশে সাফ করতে ভুলে গিয়েছিলাম। যদি আপনি এটি না করেন এবং ফাইলটি আপনার স্থানীয় ক্যাশে থাকে তবে এটি এটি আপনাকে আসল শিরোনাম (দুহ) দিয়ে পরিবেশন করবে।

আমি এটি বেশিরভাগ রানআল ম্যানেজডমডিউলস ফর অল রিকুইয়েস্টস সরিয়ে কাজ করেছিলাম:

<modules runAllManagedModulesForAllRequests="true">

এটি বেশিরভাগ স্থিতিশীল ফাইল থেকে এক্সটেনারাস হেডারগুলি সরিয়ে ফেলেছে তবে আমি সোয়াগারে আমার ওয়েবএপিআই প্রকল্পের কিছু স্ট্যাটিক ফাইলগুলিতে "সার্ভার" শিরোনাম পাচ্ছিলাম।

অবশেষে আমি এই সমাধানটি খুঁজে পেয়েছি এবং প্রয়োগ করেছি এবং এখন অযাচিত সমস্ত শিরোলেখ চলে গেছে:

https://www.dionach.com/blog/easily-remove-unwanted-http-headers-in-iis-70-to-85

যা এখানে তার কোড নিয়ে আলোচনা করে:

https://github.com/Dionach/StripHeaders/releases/tag/v1.0.5

এটি একটি নেটিভ-কোড মডিউল। এটি সার্ভার শিরোনাম সরাতে সক্ষম , কেবল মানটি ফাঁকা করে দেয় না। ডিফল্টরূপে এটি সরিয়ে দেয়:

  • সার্ভার
  • এক্স-চালিত-by
  • এক্স-Aspnet-সংস্করণ
  • সার্ভার: মাইক্রোসফ্ট-এইচটিটিপিআই / ২.০ - যা "অনুরোধটি আইআইএসে পাস করতে ব্যর্থ হলে" ফিরিয়ে দেওয়া হবে

-1

আইআইএস 7.5 এবং সম্ভবত আরও নতুন সংস্করণগুলিতে শিরোনামের পাঠ্য সঞ্চিত আছে iiscore.dll

একটি হেক্স সম্পাদক ব্যবহার করে স্ট্রিং এবং এর 53 65 72 76 65 72পরে "সার্ভার" শব্দটি সন্ধান করুন এবং নাল বাইটগুলি দিয়ে প্রতিস্থাপন করুন। আইআইএস 7.5 এ এটির মতো দেখাচ্ছে:

4D 69 63 72 6F 73 6F 66 74 2D 49 49 53 2F 37 2E 35 00 00 00 53 65 72 76 65 72 

কিছু অন্যান্য পদ্ধতির মত নয় এটির ফলে কোনও পারফরম্যান্স জরিমানা হয় না। শিরোনামটি সমস্ত অনুরোধগুলি, এমনকি অভ্যন্তরীণ ত্রুটিগুলি থেকেও সরানো হয়েছে।

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