0

専用ディレクトリから静的ドキュメントを提供する WP サイトの管理者を引き継ぎます。現在のディレクトリは、スヌーピングの影響を受けやすい最上位 (/public_html/docs) にあります。このサイトは、ログイン ファイアウォールの背後にあります。

ファイル ディレクトリには 500 を超える個々のファイルが含まれているため、個々のリンクをアップロードして手動で編集するのはばかげているように思えます。(少なくとも私には。)

このディレクトリを WP ディレクトリ内のより安全な場所に移動する必要がありますか? または、.htaccess を構成するための推奨される方法は何ですか?

4

1 に答える 1

0

少なくとも、/public_html/docs ディレクトリ内にある .htaccess ファイルを使用してディレクトリ リストを無効にします。

IndexIgnore *

おそらく、より安全な方法は、docs ディレクトリを public_html ディレクトリの外に移動することです。次に、www.site.com/serve_doc.php?name=xxxx.pdf などの変数を渡すことでドキュメントを提供できる PHP スクリプトを使用します。

これを実現するためのコードを次に示します。

// 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考えられる 1 つの方法は、ファイルを提供する前に、そのスクリプトでWordpress 関数を呼び出すことです。

于 2013-10-23T15:45:52.000 に答える