是否从输出HTML检测ASP.NET版本?

是否从输出HTML检测ASP.NET版本?,asp.net,Asp.net,好吧,这可能是一件小事要知道-因此琐事标签但是,有人知道最终输出中会泄露所使用的运行时版本的任何差异吗 换句话说,如果您访问了一个网站,并且知道它是通过ASP.NET生成的,那么是否有任何关于标记的信息会泄露该网站是针对2.0还是3.5运行的?没有任何信息可以保证输出会表明您在寻找什么 这一点尤其正确,因为您可以创建HTTP处理程序来输出您想要的任何内容。否。HTTP头由管理员配置,因此不可靠。例如,stackoverflow.com说: Server: Microsoft-IIS/7.5 X

好吧,这可能是一件小事要知道-因此琐事标签但是,有人知道最终输出中会泄露所使用的运行时版本的任何差异吗


换句话说,如果您访问了一个网站,并且知道它是通过ASP.NET生成的,那么是否有任何关于标记的信息会泄露该网站是针对2.0还是3.5运行的?

没有任何信息可以保证输出会表明您在寻找什么


这一点尤其正确,因为您可以创建HTTP处理程序来输出您想要的任何内容。

否。HTTP头由管理员配置,因此不可靠。例如,stackoverflow.com说:

Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
X-Powered-By: PHP/5.3.0
MSN.com说:

Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
X-Powered-By: PHP/5.3.0
37signals.com说:

Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
X-Powered-By: PHP/5.3.0

任何人都可以让任何由ASP.NET3.5支持的php站点做出响应,或者声称这是一个perl脚本,而实际上是一个ASP站点。最终,HTTP只是文本,所有的头都可以由有知识的人配置,从信任的角度来看,它们几乎没有意义。

没有ASP.NET 3.5这样的东西。只有2.0(很快,4.0)


请记住,.NET3.5只是一些.NET2.0服务包之上的一些额外程序集。没有新的CLR,因此没有新的ASP.NET版本。

ASP.NET 2.0网站可能正在运行v2.0或v3.5框架和 ASP.NET 4.0网站可能正在运行v4.0或v4.5框架

有几种方法可以检查您正在运行的确切版本,在您的网页上添加:

<%= System.Environment.Version.ToString() %>

例如,

  • 如果安装了v4.0,您将看到v4.0.30319.1008
  • 如果安装了v4.5,您将看到v4.0.30319.34209 将获取当前正在运行的版本。您可以在以下位置检查注册表中的所有已安装版本:
HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\NET Framework安装程序\NDP\v4\Full

在此位置中,查看版本节点

  • 如果安装了v4.0,您将看到v4.0.30319
  • 如果安装了v4.5,您将看到v4.5.51209

Andy是正确的,我当前项目的标题表明该网站由纯邪恶驱动。嗯,我不一定要说保证。只是在2.0和3.5中倾向于以一种方式呈现的东西。任何东西都可以。@LoveMeSomeCode-在这方面没有什么不同,还有更多的东西,但是从2.0到3.5没有任何东西被替换,都是2.0 CLR,大多数web控件都是从最初的2.0版本中发布的。也许如果你告诉我们你想要完成什么,我们可以更好地帮助你。我想不出为什么这些信息会有用。“我想不出为什么这些信息会有用”-这可能是我“琐事”标签背后的动机。我不太确定。毕竟,微软已经出版了一本名为《微软®ASP.NET 3.5循序渐进》的书。我知道你想说什么,这就是我想要的。我应该澄清一下,我并不是在寻找一个万无一失的解决方案,也不是在期待有人用标题尝试一些欺骗性的东西。Firefoxs WebDeveloper插件中的X-Powered-By正是我想要的。谢谢