是否从输出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 将获取当前正在运行的版本。您可以在以下位置检查注册表中的所有已安装版本:
- 如果安装了v4.0,您将看到v4.0.30319
- 如果安装了v4.5,您将看到v4.5.51209