注释掉deny from all后https可以用,但是会不会有安全问题?

https works after comment out deny from all, but will there be any security problem?

我现在正在努力将我们网站的认证安装到 https。我已经尝试了几天,直到找到一个论坛,该论坛要注意拒绝所有将阻止访问的论坛。所以我注释掉了 deny from all 现在它起作用了,但是在安全方面会有什么问题吗?下面是使用的配置,有没有相关命令可以参考的网站?

<Directory "${INSTALL_DIR}/www/abc">
 SSLOptions +StdEnvVars
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order Deny,Allow
Deny from all
    Allow from 127.0.0.1 localhost ::1
</Directory>

Deny from all 指令的作用与它所说的完全一样:它阻止所有请求,无论它们来自何处。具有讽刺意味的是,当且仅当请求来自相同的 IP 地址时,下一行才允许访问,因此这可能是您可以拥有的最安全的配置,前提是您不介意拥有有史以来最无用的服务器。

您只想使用 Deny from all 来阻止对文件系统的访问,否则它会阻止所有传入请求,正如您所注意到的。然后,您特别允许访问您计划从中提供文件的目录,如下所示:

# Make the server filesystem completely off-limits
<Directory "/">
    # Do not permit .htaccess files to override this setting
    AllowOverride None

    # Deny all requests
    Require all denied
</Directory>

<Directory "${INSTALL_DIR}/www/abc">
    # If you want directories to be allowed to override settings
    AllowOverride All

    # Let people actually access the server content
    Require all granted
</Directory>

<Files ".ht*">
    # Make sure .htaccess file (which contain server configurations and
    # settings) are completely off-limits to anyone accessing the server,
    # even if they are in a directory that is otherwise accessible.
    Require all denied
</Files>

就服务器的安全性而言,我给你的最好建议就是确保敏感文件和密码不存储在服务器可访问的目录中。即使 php 文件中的密码也不安全,因为如果恶意行为者能够以某种方式禁用 php 引擎,该文件将以纯文本形式提供,其中包含所有敏感信息。

避免这种情况的最佳方法是在服务器根目录之外创建一个配置文件,并使用 SetEnv 指令来定义变量。

SetEnv DATABASE_USERNAME "KobeBryantIsBetterThanJordan24"
SetEnv DATABASE_PASSWORD "LebronJamesIsAlsoPrettyGood107"

然后你可以使用类似这样的东西将变量放入你的 php 脚本中,而不用每次都以明文形式公开信息。

$username = filter_input(INPUT_SERVER, 'DATABASE_USERNAME', FILTER_SANITIZE_STRING);
$password = filter_input(INPUT_SERVER, 'DATABASE_PASSWORD', FILTER_SANITIZE_STRING);

define('DATABASE_USERNAME', $username);
define('DATABASE_PASSWORD', $password);

最后但同样重要的是,确保将 phpinfo 添加到 php.ini 文件中的 disable_functions 设置,因为那样会立即暴露密码。