Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 删除未使用的HTTP处理程序以获得更好的性能&;安全_Asp.net_Performance_Security_Iis_Httphandler - Fatal编程技术网

Asp.net 删除未使用的HTTP处理程序以获得更好的性能&;安全

Asp.net 删除未使用的HTTP处理程序以获得更好的性能&;安全,asp.net,performance,security,iis,httphandler,Asp.net,Performance,Security,Iis,Httphandler,在哪里可以获得所有默认IIS HTTP处理程序的功能列表?我需要文件!!我读过一些博客,其中建议出于性能和安全原因删除几十个未使用的HTTP处理程序 例如,建议删除TraceHandler-Integrated和TraceHandler-Integrated-4.0,因为在生产环境中,否则导航到/trace.axd会导致500内部服务器错误,而不是404未找到,并且您不应该启用跟踪 GitHub项目(现已删除)建议手动删除大量列表的一些HTTP处理程序: <system.webServer

在哪里可以获得所有默认IIS HTTP处理程序的功能列表?我需要文件!!我读过一些博客,其中建议出于性能和安全原因删除几十个未使用的HTTP处理程序

例如,建议删除TraceHandler-Integrated和TraceHandler-Integrated-4.0,因为在生产环境中,否则导航到/trace.axd会导致500内部服务器错误,而不是404未找到,并且您不应该启用跟踪

GitHub项目(现已删除)建议手动删除大量列表的一些HTTP处理程序:

<system.webServer>
  <handlers>
    <remove name="TraceHandler-Integrated-4.0" />
    <remove name="TraceHandler-Integrated" />
    <remove name="AssemblyResourceLoader-Integrated-4.0" />
    <remove name="AssemblyResourceLoader-Integrated" />
    <remove name="WebAdminHandler-Integrated-4.0" />
    <remove name="WebAdminHandler-Integrated" />
    <remove name="HttpRemotingHandlerFactory-soap-ISAPI-2.0-64" />
    <remove name="svc-ISAPI-4.0_32bit" />
    <remove name="ScriptHandlerFactoryAppServices-Integrated-4.0" />
    <remove name="ScriptResourceIntegrated-4.0" />
    <remove name="svc-ISAPI-4.0_64bit" />
    <remove name="svc-Integrated-4.0" />
    <remove name="vbhtm-ISAPI-4.0_32bit" />
    <remove name="vbhtm-ISAPI-4.0_64bit" />
    <remove name="vbhtm-Integrated-4.0" />
    <remove name="vbhtml-ISAPI-4.0_32bit" />
    <remove name="vbhtml-ISAPI-4.0_64bit" />
    <remove name="vbhtml-Integrated-4.0" />
    <remove name="xamlx-ISAPI-4.0_32bit" />
    <remove name="xamlx-ISAPI-4.0_64bit" />
    <remove name="xamlx-Integrated-4.0" />
    <remove name="xoml-ISAPI-4.0_32bit" />
    <remove name="xoml-ISAPI-4.0_64bit" />
    <remove name="xoml-Integrated-4.0" />
    <remove name="HttpRemotingHandlerFactory-rem-Integrated-4.0" />
    <remove name="HttpRemotingHandlerFactory-rem-ISAPI-2.0" />
    <remove name="rules-ISAPI-4.0_32bit" />
    <remove name="rules-Integrated-4.0" />
    <remove name="HttpRemotingHandlerFactory-soap-Integrated" />
    <remove name="HttpRemotingHandlerFactory-soap-ISAPI-2.0" />
    <remove name="HttpRemotingHandlerFactory-soap-ISAPI-4.0_64bit" />
    <remove name="HttpRemotingHandlerFactory-soap-Integrated-4.0" />
    <remove name="HttpRemotingHandlerFactory-soap-ISAPI-4.0_32bit" />
    <remove name="rules-ISAPI-4.0_64bit" />
    <remove name="HttpRemotingHandlerFactory-rem-ISAPI-2.0-64" />
    <remove name="HttpRemotingHandlerFactory-rem-Integrated" />
    <remove name="HttpRemotingHandlerFactory-rem-ISAPI-4.0_32bit" />
    <remove name="HttpRemotingHandlerFactory-rem-ISAPI-4.0_64bit" />
    <remove name="AXD-ISAPI-2.0-64" />
    <remove name="cshtml-ISAPI-4.0_64bit" />
    <remove name="cshtml-Integrated-4.0" />
    <remove name="cshtm-Integrated-4.0" />
    <remove name="cshtml-ISAPI-4.0_32bit" />
    <remove name="cshtm-ISAPI-4.0_64bit" />
    <remove name="cshtm-ISAPI-4.0_32bit" />
    <remove name="AXD-ISAPI-4.0_64bit" />
    <remove name="AXD-ISAPI-2.0" />
    <remove name="AXD-ISAPI-4.0_32bit" />
    <remove name="PageHandlerFactory-ISAPI-2.0-64" />
    <remove name="PageHandlerFactory-ISAPI-2.0" />
    <remove name="PageHandlerFactory-ISAPI-4.0_64bit" />
    <remove name="PageHandlerFactory-ISAPI-4.0_32bit" />
    <remove name="aspq-ISAPI-4.0_64bit" />
    <remove name="aspq-Integrated-4.0" />
    <remove name="WebServiceHandlerFactory-ISAPI-2.0" />
    <remove name="aspq-ISAPI-4.0_32bit" />
    <remove name="WebServiceHandlerFactory-Integrated-4.0" />
    <remove name="WebServiceHandlerFactory-Integrated" />
    <remove name="SimpleHandlerFactory-ISAPI-4.0_64bit" />
    <remove name="SimpleHandlerFactory-Integrated-4.0" />
    <remove name="SimpleHandlerFactory-Integrated" />
    <remove name="SimpleHandlerFactory-ISAPI-2.0" />
    <remove name="SimpleHandlerFactory-ISAPI-2.0-64" />
    <remove name="WebServiceHandlerFactory-ISAPI-4.0_32bit" />
    <remove name="WebServiceHandlerFactory-ISAPI-4.0_64bit" />
    <remove name="WebServiceHandlerFactory-ISAPI-2.0-64" />
    <remove name="SimpleHandlerFactory-ISAPI-4.0_32bit" />
    <remove name="ISAPI-dll" />
    <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
    <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
    <remove name="OPTIONSVerbHandler" />
    <remove name="TRACEVerbHandler" />
  </handlers>
</system.webServer>

对此的回答:

我在哪里可以得到所有默认IIS HTTP处理程序所做的工作的列表

打开IIS,CMD-->inetmgr,然后单击处理程序映射,请参见下面的屏幕截图

单击该按钮,它将显示该web服务器的所有默认启用的HTTP处理程序

注意:当您选择一个虚拟目录,然后执行此过程时,即单击处理程序映射,并删除其中一个映射,它将在web.config中添加该行

例如,我已经删除了
aspq-ISAPI-4.0_64bit
,因此它更改了该虚拟目录的
web.config
,也就是说,它在web.config中添加了以下行

下的
系统.webServer\handlers

更新:当特定的文件类型请求出现时,将调用此处理程序,直到它处于空闲状态。因此,这些处理程序不会有任何性能问题


例如,您有
删除*.axd的处理程序将提高安全性
,对此我的回答是,某些DLL可能需要这些文件来呈现js和css,如果您删除这些文件,它将无法工作。例如-

如果您真的想要一组最小的处理程序映射,我建议您开始清理,在web.config中删除所有处理程序,只使用StaticFile-one:

<system.webServer>
    <handlers>
        <clear />
         <add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" />
    </handlers>
</system.webServer>
如果您的项目不使用某些扩展,您可以删除这些处理程序

大多数处理程序映射都有一个
前提条件
,比如在32位应用程序池中应用,或者在经典模式下应用。如果只运行64Big集成模式,则可以删除所有经典模式和32位处理程序映射

如果我们查看*.cshtml中的Razor视图文件,您会发现三个映射,其中两个是32/64位的ClassicMode,指向ASP.NET ISAPI模块,但第三个仅适用于集成模式,并映射到HttpForbiddenHandler,因为MVC路由在集成模式下的工作方式不同,您永远不希望允许直接查看文件

经典asp或CGI可能有IsapiModules,比如asp.NET映射,用于处理对具有特定扩展名的文件的请求

第二大组是
type=“System.
处理程序,让我们看看它们:

System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory

在集成模式下处理
*.rem
*.soap
文件。如果不使用远程处理,可以将其删除

System.ServiceModel.Activation.HttpHandler,System.ServiceModel.Activation

使用
*.rules、*.xoml、*.svc
扩展名处理某些WCF请求

System.Web.Handlers.AssemblyResourceLoader

处理
WebResource.axd
请求,这些请求可以在WebForms中使用,但通常不会在MVC项目中使用

System.Web.Handlers.ScriptResourceHandler,System.Web.Extensions

用于处理
ScriptResource.axd
,它在WebForms中提供JavaScript和CSS资源

System.Web.Handlers.TraceHandler

trace.axd
的处理程序,以显示ASP.NET跟踪信息。在生产站点上,您要删除此处理程序

System.Web.Handlers.TransferRequestHandler

用于在集成模式下处理无扩展请求。这会将请求转发给路由引擎,以决定如何处理这些请求

System.Web.Handlers.WebAdminHandler

处理
WebAdmin.axd
以显示
ASP.NET网站管理工具包
,如果不使用该内置功能,则可以删除该工具包

System.Web.httpbankedenhandler

允许我们阻止访问具有特定扩展名的任何文件。但是,它返回500 HTTP状态,并在服务器上实际引发System.Web.HttpException异常。 在我看来,有更好的方式来博客某些扩展,如

System.Web.HttpMethodNotAllowedHandler

我认为这个已经不再在现代IIS中使用,它返回405HTTP状态,还抛出和HttpException

System.Web.HttpNotFoundHandler

另外,在我当前的配置中不再使用了。它抛出了一个404HTTP异常

System.Web.Script.Services.ScriptHandlerFactory、System.Web.Extensions

处理
*.asmx
*\u AppService.axd
以通过Ajax支持Web服务调用

System.Web.Services.Protocols.WebServiceHandlerFactory、System.Web.Services

还以集成模式处理.NET 2的
*.asmx
web服务请求

System.Web.StaticFileHandler

返回不再使用的静态文件

System.Web.UI.PageHandlerFactory

以集成模式处理ASP.NET Web表单页面
.aspx

System.Web.UI.Simple
  <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="0" />
 *.       = ExtensionlessUrlHandler-ISAPI
 *.ashx   = SimpleHandlerFactory-ISAPI
 *.asmx   = WebServiceHandlerFactory-ISAPI
 *.aspq   = aspq-ISAPI
 *.aspx   = PageHandlerFactory
 *.axd    = AXD-ISAPI
 *.cshtm  = cshtm-ISAPI
 *.cshtml = cshtml-ISAPI
 *.rem    = HttpRemotingHandlerFactory-rem-ISAPI
 *.rules  = rules-ISAPI
 *.soap   = HttpRemotingHandlerFactory-soap
 *.svc    = svc-ISAPI
 *.vbhtm  = vbhtm-ISAPI
 *.vbhtml = vbhtml-ISAPI
 *.xamlx  = xamlx-ISAPI
 *.xoml   = xoml-ISAPI