如何隐藏程序使用的技术?

How to hide out what technology a program is using?

当我搜索我的问题时,我发现了这个老问题。

How to find out what technology a program is using?

它定义了如何显示而不是如何隐藏?我有几个 asp.net 站点。我的一些站点使用 CKEditor 和其他 JavaScript 库。

当我在 :

中输入 url

http://builtwith.com/

它的节目:

是否有任何 web.config 设置或其他设置不显示我的 site.I 搜索经常使用但找不到任何 thing.Any 帮助的技术或程序,将不胜感激。谢谢。

除了混淆您的脚本之外,您的网站还可能以 http headers 和 html 元标记的形式泄露信息。例如,我的一个网站显示了这些 http 响应 headers:

Server: Microsoft-IIS/8.5
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET

这些显示我的站点是 运行 iis8.5 和哪个 .net 版本是 builtwith.com 上显示的第一个信息。大多数(如果不是全部)Web 服务器都有一种抑制这些的方法,当然您可以控制元标记。

此外 url 也可以包含线索。如果您有以 .aspx、.jsp、.php 结尾的 urls,那将是一个致命的赠品。您可以使用 SEF urls 或对您使用的任何服务器技术使用某种 url 重写器来解决此问题

请注意,已经有关于它的完全相同的问题:


假设您对一般解释感兴趣(因为可能有其他 builtwith-like 网站在做类似的事情):

那些类型的应用程序 可能 分析还提示像 html 结构、html 属性、html 元标记、 http headers,内置的 url 及其文件扩展名,以及 html 视图状态,这使它能够分析和(给定一些 technology-specific patterns/standards)推断您使用了哪些技术,例如 , ,以及其他技术。因此,即使您可以通过某种方式真正混淆生成的脚本、自定义构建的 url 并处理 http headers,我认为您也不会 完全 由于 html 结构(包括其属性、元标记和视图状态控件),能够隐藏使用的技术。

默认情况下 ASP.NET 对自己大喊大叫。它发送 HTTP headers 和每个响应告诉世界和狗你的网站托管的 ASP.NET 版本,甚至你正在使用的 MVC 版本。以下是每个请求都不必要地发送额外 headers 的示例:

要解决此问题,您需要做一些事情。第一个是将 httpRuntime 部分的 enableVersionHeader 设置设置为 false。

<!-- enableVersionHeader - Remove the ASP.NET version number from the response headers. Added security through obscurity. -->
<httpRuntime targetFramework="4.5" enableVersionHeader="false" />

然后需要清除自定义headers如下图

<httpProtocol>
  <customHeaders>
    <!-- X-Powered-By - Remove the HTTP header for added security and a slight performance increase. -->
    <clear />
  </customHeaders>
</httpProtocol>

阅读更多内容post:Securing the ASP.NET Web.config

github 中还有一个名为 NWebsec 的项目,NWebsec 允许您配置相当多的安全性 headers,一些对大多数应用程序有用,而另一些更专业一点。这是项目 link: Getting started with NWebsec.