防止用户通过 lighttpd 网络服务器上的 URL 打开文件

防止用户通过 lighttpd 网络服务器上的 URL 打开文件

我有一个网站,使用 JSON 文件来存储设置。这些文件位于子文件夹中,因此看起来像/settings/settings.json

如果我像这样输入本地网络上的 IP 地址,http://192.168.1.1/settings/settings.json我就可以看到 JSON 的内容。我需要以某种方式阻止这种情况,我想我可以通过 .htaccess 文件来做到这一点,但不确定。域名 ( 192.168.1.1) 是动态的,可能会不时更改,所以我需要找到一些动态方法来阻止它。

答案1

我可以看到 json 的内容。我需要以某种方式阻止这种情况发生

如果您使用 Apache,那么您可以使用:

  • 一份.htacess文件

  • 阻止Directoryhttpd.conf更好的性能)

如果您正在使用Lighttpd,那么您可以使用:

  • 指令url.access-denylighttpd.conf

请参阅下文了解说明。


Apache - 使用.htacess文件

在目录中创建一个.htaccess文件settings,内容如下:

deny from all

这将拒绝访问该文件夹中的任何文件。

笔记:

如果您有权访问 httpd 主服务器配置文件,则应完全避免使用 .htaccess 文件。使用 .htaccess 文件会降低 Apache http 服务器的速度。最好将 .htaccess 文件中包含的任何指令设置在目录块中,因为它将具有相同的效果,且性能更佳。

来源Apache HTTP 服务器教程:.htaccess 文件


Apache - 使用Directoryhttpd.conf

将以下内容添加到您的httpd.conf文件中

<Directory "/settings">
  Require all denied
</Directory>

Lighttpd - 使用url.access-deny指令lighttpd.conf

mod_access模块用于拒绝对文件和目录的访问。

  1. 编辑/etc/lighttpd/lighttpd.conf文件如下:

    vi lighttpd.conf
    
  2. 添加以下代码以启用 mod_access:

    server.modules += ( "mod_access" )
    
  3. 添加正则表达式如下:

    # deny access to /settings
    $HTTP["url"] =~ "^/settings/" {
         url.access-deny = ("")
    }
    
  4. 保存并关闭文件。

  5. 检查语法错误:

    lighttpd -t -f /etc/lighttpd/lighttpd.conf
    
  6. 如果没有错误则重新启动lighttpdWeb 服务器:

    service lighttpd restart
    

来源Lighttpd 拒绝访问文件夹/目录。脚本已进行调整以满足问题的要求。


进一步阅读

相关内容