3

私はこれで一日中頭を揚げました。目がかゆくなるまで SO を調べています...知っておく必要があります: サイトのルート外にあるファイルにアクセスするにはどうすればよいですか?

背景: Linux を実行する Apache 2.0 専用サーバー。

コード: PHP および MySQL

理由: ファイル パスとファイル名をブラウザに入力しないようにファイルを保護したい。

これはそれほど難しいことではありません...しかし、私の分裂した頭は別のことを言います. どんな助けでも大歓迎です。

4

2 に答える 2

4

多かれ少なかれ同じことをしているように見えるこの質問への答えを見てください。

簡単な要約:readfile()またはfile_get_contents()あなたが求めているものです。この例は次のreadfile()ページからのものです。

<?php
$file = 'monkey.gif';

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    exit;
}
?>

$fileユーザー入力を使用して変数を設定できるようにすることはお勧めしません。応答でファイルを任意に返す前に、ファイル名がどこから来ているかを考えてください。

于 2013-02-26T18:24:49.290 に答える
0

サイトルート外のファイルにアクセスしようとしていますか? 次に、このリンクを stackoverflowで確認できます。これはApacheの公式ドキュメントです。

それ以外の場合は、他のユーザーがサイト ルート外のファイルにアクセスするのを防ぐために特別な処理を行う必要はありません。

于 2013-02-26T00:53:36.293 に答える