【问题标题】:Hide Internal File Structure of server from being listed on Sources隐藏服务器的内部文件结构,使其不被列在 Sources 中
【发布时间】:2016-03-09 06:03:05
【问题描述】:

当我浏览我的网站并检查谷歌浏览器中的元素时,通过选择源选项卡,我可以获得我网站的所有文件夹的列表。事实上,我得到了他们原来的名字,我可以下载整个网站的代码。

我只是想隐藏真正的文件夹名称,因为人们可以使用该文件夹名称来浏览内部网站

如何防止这种情况发生?我已经在 .htaccess 文件中列出了 Options -Indexes。

我正在开发 Joomla 并使用 Amazon EC2 Ubuntu Server,因此我可以完全控制服务器。

编辑:感谢 Pt。拉曼夏尔马和 LaughingQuoll。我真的不想隐藏css或js。我只想隐藏真正的文件夹名称,因为人们可以使用该文件夹名称来浏览内部网站

编辑:我的 .htaccess 文件:

IndexIgnore *
Options +FollowSymlinks
Options -Indexes
RewriteEngine On
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule .* index.php [F]
RewriteBase /
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_URI} !^/index\.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]

【问题讨论】:

  • 这听起来像是一个错误的概念:您当然没有任何方法可以以某种方式向需要代码的用户隐藏代码,显然因为没有代码他们无法看到/使用您的报价。这样想:你发布了一些东西。您不能一方面发布某些内容,另一方面又不允许人们查看它。 然而:你提供的 URL 完全没有理由应该反映你的内部文件结构,相反。您发布的 URL 应该使您的文件系统可访问。这就是路由器/控制器的用途。
  • 这正是我想要做的。我想防止“真实文件夹”名称被反映并隐藏我原来的内部文件结构@arkascha
  • 那就去做吧。您的应用程序应使用路由器将请求路径映射到实际资源。你应该看看 URL 重写。
  • 我已经在使用 URL 重写了。而且效果很好。但是,如果我查看 Sources(在 chrome 中使用 INSPECT),它会列出存在 css 和 js 文件的原始文件夹名称! @arkascha
  • 你想再想想你最后的陈述......这是你如何设置重写规则的。你可以改变它们。 去做

标签: php css .htaccess joomla amazon-ec2


【解决方案1】:

CSS 和 JS 链接无法隐藏。基本上是因为它们用于显示页面,任何人都可以返回到文件源(这就是谷歌浏览器所做的)。所以绝对不能隐藏。另外如果你做 CRT + S 你可以保存网页的 CSS 和 JS。

【讨论】:

  • 但我还是看了一些其他的网站。他们生成了一些随机文件夹名称。我只想隐藏真正的文件夹名称,因为人们可以使用该文件夹名称来浏览内部网站
  • @iamhssingh 然后简单地生成一个随机的 8 个字符的字符串。在根目录中创建一个具有该名称的文件夹,并将 CSS 和 JS 放在该文件夹中。这样他们只能看到example.com/sJsdhYhd/CSS.css
  • 我不能以这种方式移动所有的 css 和 js。它们与 Joomla 一致!
【解决方案2】:

它应该只显示你的 css html 和 JS。这些是前端平台。您的 PHP 和 MYSQL 等后端仍然处于隐藏状态。所以不用担心这些前端的可见性。

【讨论】:

  • 但我还是看了一些其他的网站。他们生成了一些随机文件夹名称。我只想隐藏真正的文件夹名称,因为人们可以使用该文件夹名称来浏览内部网站
  • 然后在 Joomla 中,创建 robots.txt 并禁止机器人检查您的目录。检查此以获取有关 joomla docs.joomla.org/Robots.txt_file中robot.txt 的更多详细信息
【解决方案3】:

我希望我正确理解了您的问题,如果是这样,那么您的问题就没有简单的答案。在this question 中,他们解释了如何隐藏开发人员工具,这应该是您实现目标的良好起点:

要明确一点:试图阻止黑客客户端通常是bad idea; 这是为了防止specific social engineering attack

如果您最终进入了测试组并且对此感到恼火,对不起。我试过了 让the opt-out page 变得简单 可能同时仍然足够可怕以阻止至少 一些 受害者。

实际代码与@joeldixon66's link 非常相似;无缘无故我们的有点复杂。

Chrome 将所有控制台代码封装在

with ((console && console._commandLineAPI) || {}) {
  <code goes here>
}

...所以网站将console._commandLineAPI重新定义为:

Object.defineProperty(console, '_commandLineAPI',
   { get : function() { throw 'Nooo!' } })

这是not quite enough (try it!),但这是主要技巧。

【讨论】:

  • 感谢@iamhssingh,如果此答案或任何答案解决了您的问题,请单击复选标记考虑accepting it。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。
  • 我阅读了这篇文章,但这不是解决方案。它很有用,所以我会赞成它。
猜你喜欢
  • 2013-08-10
  • 1970-01-01
  • 2014-04-04
  • 1970-01-01
  • 1970-01-01
  • 2015-02-15
  • 2023-04-03
  • 2011-08-17
  • 1970-01-01
相关资源
最近更新 更多