0

我正在接管一个从专用目录提供静态文档的 WP 站点的管理员。当前目录位于似乎容易被窥探的顶层 (/public_html/docs)。该站点位于登录防火墙后面。

文件目录包含超过 500 个单个文件,因此上传和手动编辑单个链接似乎很荒谬。(至少对我来说。)

我应该将此目录移动到 WP 目录中更安全的位置吗?或者,配置 .htaccess 的首选方式是什么?

4

1 回答 1

0

至少我会使用位于 /public_html/docs 目录中的 .htaccess 文件来禁用目录列表。

IndexIgnore *

可能更安全的方法是将 docs 目录移到 public_html 目录之外。然后使用一个 PHP 脚本,它可以通过传递一个变量来为您的文档提供服务,例如 www.site.com/serve_doc.php?name=xxxx.pdf。

下面是一些代码来实现这一点:

// get the file name
$file = $_GET['name'];
$dir = "/home/xxxx/docs/";
$fp = fopen($dir.$file, 'rb');
if(!$fp) { exit; }

// open the file
$finfo = finfo_open();
$filetype = finfo_file($finfo, $file, FILEINFO_MIME);
finfo_close($finfo);
$filename = $file;

// send the right headers
header("Cache-Control: ");// leave blank to avoid IE errors
header("Pragma: ");// leave blank to avoid IE errors
header("Content-Type: " .$filetype );
header('Content-Disposition: attachment; filename="'.$filename.'"');
header("Content-Length: " . filesize($dir.$file));

// dump the file and stop the script
fpassthru($fp);
exit();

当然,您需要添加一些身份验证来验证用户是否应该能够调用这个 PHP 脚本。一种可能的方法是is_user_logged_in在提供文件之前在该脚本中调用 Wordpress 函数。

于 2013-10-23T15:45:52.000 回答