有没有办法(作为客户端)告诉是否有任何正在处理的服务器端代码(PHP / ASP.NET)或者它是否只是静态 html 文件?
答案1
尝试builtwith.com,它将告诉您有关服务器所运行平台的所有信息。
答案2
你不可能总是知道答案。下面是一个例子。我可以设置 apache 以任何我想要的方式处理特定扩展。我可以让 php 呈现包含 PHP 的 .html 文档。
用户将看到的只是一份 HTML 文档(.html 扩展名)。
不过,在大多数情况下,扩展可以给你一个提示,但如果有动态内容,那也是一个很好的线索。
答案3
根据服务器设置(如果您使用的是 Linux),您可能能够使用命令行工具curl
并-I
选择显示如下标题;以 Microsoft 为例:
curl -I www.microsoft.com/
Microsoft 返回的标头如下:
HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Length: 1020
Content-Type: text/html
Last-Modified: Mon, 16 Mar 2009 20:35:26 GMT
Accept-Ranges: bytes
ETag: "67991fbd76a6c91:0"
Server: Microsoft-IIS/8.0
X-Powered-By: ASP.NET
Date: Sun, 12 Oct 2014 08:28:11 GMT
那么,上面那行文字是X-Powered-By: ASP.NET
?嗯,我想这回答了这个问题,对吧?其实不然。虽然服务器可能能够使用 ASP.NET,但这并不意味着您正在查看的页面正在使用 ASP.NET。
让事情变得更加复杂的是,微软当然会使用 ASP.NET,对吧?但你猜怎么着?在现实世界中,大多数服务器(至少是管理良好的服务器)不会公布他们使用的服务器软件的任何真实细节。这称为服务器强化。例如,让我们看看 BBC 网站的标题输出:
curl -I www.bbc.co.uk/
标题输出如下:
HTTP/1.1 200 OK
Server: Apache
Content-Type: text/html
Content-Language: en-GB
Etag: "1d86e04c393ac9be31d256305b22b59e"
X-PAL-Host: pal116.telhc.bbc.co.uk:80
Transfer-Encoding: chunked
Date: Sun, 12 Oct 2014 08:32:46 GMT
Connection: keep-alive
Set-Cookie: BBC-UID=d524632ae30c5a5eebfec61e915b62ab64b472f7c4b4e10e5ae1a4c76eacdbc00curl/7.30.0; expires=Thu, 11-Oct-18 08:32:46 GMT; path=/; domain=.bbc.co.uk
X-Cache-Action: HIT
X-Cache-Hits: 827
X-Cache-Age: 88
Cache-Control: private, max-age=0, must-revalidate
Vary: X-CDN
我们从中唯一能得到的是 BBC 的主网站使用 Apache。但它为网络的很大一部分提供支持。我们知道 Apache 的版本吗?我们知道幕后脚本是什么吗?不知道。一点也不知道。
这是故意的,因为绝大多数恶意软件/机器人脚本都在互联网上寻找系统中的弱点,对吧?如果网站基本上宣传“嘿!我正在使用这个旧版本的 Apache 以及旧版本的 PHP!”那会怎样?猜猜会怎样?现在恶意软件确切地知道要按什么按钮才能访问系统中的弱点。没人想要这样。因此,绝大多数管理良好的服务器都不会宣传它们是谁/是什么。
当然,强化措施只能减缓攻击速度。也就是说,假设有 1,000 种可能的方式攻击服务器。发送详细的标头可能会将范围缩小到 20 种,这样黑客就可以更快地进入。但一个决心坚定的黑客可能会让所有 1,000 个漏洞都尝试通过。因此,这不是一种万无一失的阻止攻击的方法。但总比没有好。
也就是说,普通观察者可能永远不知道网站究竟由什么运行。如果这让你感到沮丧,那就怪我们生活的世界吧,恶意机器人/蜘蛛不断探测网站。他们的不良行为让我们其他人的生活更加艰难。
答案4
这是一个非常老的问题,但答案是,随着时间的推移,有些东西发生了变化,需要更新。以前最好尝试使用builtwith.com,但现在他们没有免费服务。现在我们有什么替代方案
- 在注释的 HTML 中搜索任何提示
- 在 html 或 CSS 文件中搜索任意主题名称,可以通过主题名称回溯到平台
- 尝试获取 500 或 404 错误页面,您可能会得到一些提示,大多数人不会自定义错误页面,codeignitor 默认错误页面非常容易识别。
- wordpress 网站很容易通过 URL 识别,如果 /admin/admin.php 和 /admin/login.php 存在,那么有 40% 的可能性是 wordpress 网站
- 微软 MVC 有一些类似的签名,可以通过查看默认主题设计来识别它们。