将敏感文件放在网络服务器上并防止其被访问的最佳方法是什么?

将敏感文件放在网络服务器上并防止其被访问的最佳方法是什么?

我需要在我的 Web 服务器上放置一个私钥以供 php 脚本使用,因此我需要 Web 服务器能够访问 php 脚本中的文件,但不允许外部用户访问该文件。

基本上,我想问的是将文件放在文件系统中的最佳位置是哪里,以及如何设置权限/设置正确的权限是什么?

我有一个新设置的 Ubuntu 11.04 服务器,并且正在使用 LAMP 包。

答案1

位于文档根目录之外。可能是 /etc/ssl/www/mykey.ext。

sudo mkdir -p /etc/ssl/www
sudo chown root:www-data /etc/ssl/www
sudo chmod 0750 /etc/ssl/www
sudo cp mykey.ext /etc/ssl/www/
sudo chown root:www-data /etc/ssl/www/mykey.ext
sudo chmod 0640 /etc/ssl/www/mykey.ext

现在它仅对 root、sudoers 和 www-data 可用。但是,如果 Apache 配置了用户目录 (~/public_html),则任何用户都可以要求 Apache 读取它。或者,任何可以创建将被 Web 服务器读取的文档的用户都可以读取它。

更好的解决方案是从数据库读取密钥或将其作为脚本中的变量。在数据库方法上,保护 Web 应用程序免受 SQL 注入攻击。

答案2

您还可以检查编辑强大的.htaccess文件。 http://www.javascriptkit.com/howto/htaccess.shtml 在 Google 上搜索更多结果...

相关内容