【问题标题】:How to forbid direct access to website directories in browser url, but allow when website requests them internally?如何在浏览器 url 中禁止直接访问网站目录,但在网站内部请求时允许?
【发布时间】:2019-04-02 16:38:00
【问题描述】:

我有 Apache+Nginx 混合服务器设置运行一个带有 php/mysql 后端的网站。

出于安全原因,我试图限制用户直接访问我网站的内部文件夹/目录,如 css、Js 和其他包含的 php 文件。

例如,如果用户在浏览器 url 中输入 https://mywebsite.com/csshttps://mywebsite.com/included-php-files/ 那么它应该给他 403 禁止目录访问错误。

但是,当必须通过 Ajax 请求或内部包含中的 index.php 等内部文件访问这些目录时,应该允许这些目录具有访问权限。

我尝试了许多解决方案,但它们甚至永久阻止访问我的网站内部文件。

/css
/Js
/admin
/sitemap/sitemap files/

这些是我网站内的目录示例,我需要隐藏它们以防止用户直接访问它们以防止滥用它们。

我尝试的最后一件事是,我在每个要停止直接外部访问的文件夹中添加了一个空 index.php 文件,这样当用户尝试访问这些文件夹或目录时,它会向他们显示空白页面。

但我希望是否有其他更好的方法,例如使用 nginx 或 apache?

请帮帮我..

如果需要更清楚地了解问题,我会更新..

【问题讨论】:

  • 你可以利用.htaccess来限制行为
  • 是的,我试图在 .htaccess 中拒绝,但即使我的网站页面试图访问这些目录,它也会拒绝访问,所以即使我必须更改一些 Nginx 配置,我也在寻找解决方案。
  • 您不能出于显而易见的原因拒绝访问您的页面需要访问的任何内容。请记住,浏览器会解析您的 HTML,然后获取 CSS 和 JS 等资源
  • @RiggsFolly 但是我有些网站他们允许他们的网站页面访问这些文件夹,但阻止外部用户访问,请看这里 - filmydog.com/js,你将无法访问它,但网站正在通过访问它来加载它。
  • 然后你必须例如用 PHP 编写一个接口脚本并传递参数请求资源。然后 PHP 可以从任何地方返回该资源。 但这将对您的网站代码进行重大更改

标签: php mysql apache .htaccess nginx


【解决方案1】:

只需使用 .htaccess 文件 将以下行放入您的 .htaccess 文件中

Options -Indexes

【讨论】:

  • 谢谢,我已将此代码添加到 apache 服务器站点文件夹中的默认配置文件中:)
  • hai ,非常感谢您的回答,它运行良好.....
猜你喜欢
  • 2012-12-28
  • 2015-02-04
  • 2018-08-11
  • 2015-11-15
  • 2010-09-16
  • 1970-01-01
  • 1970-01-01
  • 2013-05-24
  • 2019-10-15
相关资源
最近更新 更多