首先,我知道 XAMPP 并不适合生产环境。但我是 Apache、MySQL 的新手,最重要的是,我对 PHP 还很陌生。我有 Node.js/Java/Javascript 背景,所以这一切对我来说都很新。
在这个我使用 XAMPP 开发的特定测试应用程序上,我也使用 Windows(这对我来说也很不寻常。我通常使用 Ubuntu 来创建和管理我的服务器)。
我已经通过预制的 PHP 模板创建了这个应用程序,因此在运行 XAMPP 的安全页面程序之前,我替换了所有的“htdocs”文件。
我想介绍一下我为尝试保护环境而采取的步骤,并请您给我更多建议或告诉我是否遗漏了什么。
- 我彻底删除了该
webdav
文件夹。 - 我更改了 MySQL 根密码。
- 我已将 PhpAdmin 默认密码更改为 Cookie Auth。
- 我在想要保护的文件夹上设置了一个
.htaccess
文件。(作为 Apache 的新手,这对我来说有点令人困惑。起初我想保护整个 XAMPP 文件夹,但后来没有人可以在不强制使用凭据登录的情况下访问我的 Web 应用程序.htpsswd
,这不是我想要的。我只希望这种情况发生在具有可下载敏感用户文件的文件夹中,因此我.htaccess
相应地移动了文件。虽然我不知道这是否可取,因为我看到很多人说要采取的第一个安全措施是.htaccess
在 XAMPP 文件夹的根目录上实际设置一个文件。虽然我确实有一个,但它没有受到身份验证保护。我担心的是缺乏对 Apache 如何决定哪个文件夹是“可访问的”或其他的理解。我习惯于创建一个只能通过我明确创建并允许用户使用的路由访问的 Web 服务器。我不太清楚 PHP 和 Apache 如何协同定义这些权限。) - 我没有使用 FileZilla(据我所知也没有运行它)。
- 我没有使用 Mercury(据我所知也没有运行它)。
- 我没有使用 Tomcat(据我所知也没有运行它)。
现在,我更担心的是PhpAdmin
。起初我可以通过 localhost 访问它,但当我设置指向我的域和 SSL 的 VirtualHost 服务器时,它就丢失了。我“修复”该问题的方法是重新创建另一个 VirtualHost,该 VirtualHost 监听指向 localhost 的端口 80。尽管我尝试PhpAdmin
通过域和 IP 进行远程访问,但没有成功,但我仍然担心它可能通过网络以某种方式受到攻击。这是我VirtualHost
在httpd-ssl.conf
<VirtualHost *:80>
ServerName localhost
DocumentRoot "C:/xampp/apache/logs/error.log"
</VirtualHost>
##
## SSL Virtual Host Context
##
<VirtualHost *:80>
ServerName http://example.com
DocumentRoot "C:/xampp/apache/logs/error.log"
Redirect / https://example.com/login
</VirtualHost>
<VirtualHost _default_:443>
# General setup for the virtual host
DocumentRoot "C:/xampp/htdocs"
ServerName example
ServerAdmin [email protected]
ErrorLog "C:/xampp/apache/logs/error.log"
TransferLog "C:/xampp/apache/logs/access.log"
据我所知,尽管 MySQL 守护进程可以通过网络访问,但入侵者必须暴力破解才能获取密码。我的敏感可下载文件通过.htaccess
凭证进行保护。
我认为我的 PhpAdmin 也受到保护,但这个我不太确定。我很感激任何意见。