您的位置:首页 > 编程语言 > ASP

Asp.net移除Server, X-Powered-By, 和X-AspNet-Version头

2011-08-07 13:29 465 查看
我们在开发Asp.net中,最后部署在IIS上.然后发送HTTP请求,返回的HTTP头中包含Server,X-Powered-By,和X-AspNet-Version信息.这些信息有时给攻击者找寻你的站点漏洞提供的依据.如下图我们通过FireBug查看到:





移除X-AspNet-Version很简单,只需要在Web.config中增加这个配置节:

<httpRuntimeenableVersionHeader="false"/>

移除Server呢,我们可以写一个自定义HttpModule,看下来代码:

namespaceMyWeb
{
publicclassRemoveServerInfoModule:IHttpModule
{
#regionIHttpModuleMembers
publicvoidDispose(){
//nocodenescessary
}
publicvoidInit(HttpApplicationcontext)
{
context.PreSendRequestHeaders+=newEventHandler(context_PreSendRequestHeaders);
}
voidcontext_PreSendRequestHeaders(objectsender,EventArgse)
{
//stripthe"Server"headerfromthecurrentResponse
HttpContext.Current.Response.Headers.Remove("Server");
}
#endregion
}
}

.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}

.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}

上面这段代码会ariseexceptioin,我们最好这样实现PreSendRequestHeaders方法:

voidcontext_PreSendRequestHeaders(objectsender,EventArgse)
{
try
{
HttpApplicationapp=senderasHttpApplication;
if(null!=app&&null!=app.Request&&!app.Request.IsLocal&&null!=app.Context&&null!=app.Context.Response)
{
varheaders=app.Context.Response.Headers;
if(null!=headers)
{
headers.Remove("Server");
}
}
}
catch(Exceptionex)
{
Log.HandleException(ex);
}
}

.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}

最后在Web.config中配置这个HttpModule:

<httpModules>
<addname="RemoveServerInfoModule"type="MyWeb.RemoveServerInfoModule"/>
</httpModules>

.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}

ForIIS7:

<system.webServer>
<modulesrunAllManagedModulesForAllRequests="true">
<addname="RemoveServerInfoModule"type="MyWeb.RemoveServerInfoModule"/>
</modules>
</system.webServer

.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}

这样就OK了,你再运行Asp.netwebapplication时,Server,X-AspNet-Version等信息已经不显示了.

希望对您开发,有帮助.

作者:PetterLiu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
该文章也同时发布在我的独立博客中-PetterLiuBlog。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐
章节导航