通常,Web应用程序可以呈现它喜欢的任何HTML。因此,从理论上讲,任何语言都可以呈现相同的HTML输出。
但是,我们可以通过一些方法来推断运行服务器端的内容。例如,文件扩展名通常是一个死的赠品(尽管它们在技术上可能是伪造的)。由于我在ASP.NET方面的经验,我知道我们可以识别ASP.NET应用程序的一种方法是在呈现的文档中存在VIEWSTATE,尽管缺少viewstate并不一定意味着应用程序不是在ASP.NET上运行
我们可以在服务器上运行一些操作系统/服务器指纹识别,但总的来说这没什么用 - 现在,即使是Windows服务器也可以运行很多应用程序平台。
还有哪些其他分析技术可以帮助我们确定服务器上运行的是什么?某些语言会留下什么其他线索?
如果我们能够更好地理解我们的应用程序正在离开的工件,可能很小,以至于我们没有注意到它们,我们可以通过从输出中删除它们来开始更好的安全性。
答案 0 :(得分:2)
检查HTTP标头是一个好的开始。 IIS6和ASP.Net默认情况下似乎插入一个X-Powered-By Header,ASP.Net作为值。
答案 1 :(得分:0)
在HTTP标头中,您(通常但不总是)会找到名为Server
的标头,该标头指示用于为网页提供服务的Web服务器。有时您会找到一个名为X-Powered-By
的标题,表示Web服务器使用的平台/技术。
答案 2 :(得分:0)
https://addons.mozilla.org/en-US/firefox/addon/2166
正如其他人提到的,您可以查看Server
和X-Powered-By
标题。例如,stackoverflow的服务器是Server: Microsoft-IIS/7.0
,所以我可以推断这是ASP驱动的。
以下是我访问的一些随机网站和一些X-Powered-By标题:
X-Powered-By: PHP/5.2.9
。 (php论坛)X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 2.0.3
(rubyonrails.org)其他Web应用程序在页脚中有一个可以看到的签名,例如Powered-By(应用程序名称)。