0

PHPベースのログイン認証メカニズムを使用してWebサイトの一部(フォルダーmodule1module2など)へのアクセスを許可/制限していますが、ファイルへのアクセスを制限する際に問題があります。ドキュメントフォルダ(以下を確認)を使用して、ダウンロード可能なファイルをホストしました。これらのファイルへのリンクは、index.php(ルートディレクトリでホストされている)に表示されます。ただし、何らかの理由で許可されていないユーザーがドキュメントに含まれているファイルのURLを取得した場合、そのユーザーはそれをダウンロードできます。

/
/documents/
/module1/
/module2/

PS:これはイントラネットWebサイトであるため、 IPによるドキュメントへのアクセスを制限しましたが、許可されたIPアドレスを持つPCを使用し、ドキュメントのURLを知っている可能性はまだわずかです。

4

1 に答える 1

0

実際のソースの場所を提供せずにユーザーにファイルを提供する、ある種のプロキシ PHP スクリプトを使用します。

ユーザーには、 http: //yourdomain.com/download.php?file=mydoc.docxが表示されます。

実際のパスはまだ /documents/userid/2342/mydoc.docx またはあなたの構造がどのように見えるかです。

次に、download.php ファイルがファイルを提供するようにします。

<?php
// Validate the user here

// Set document root
$root = 'documents/userid/'.$userID.'/';

// Requested file
$file = $_GET['file'];

// Validate
if (file_exists($root . $file))
{
    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Cache-Control: private", false);
    header("Content-Type: application/force-download");
    header("Content-Disposition: attachment; filename=\"".basename($file)."\";");
    header("Content-Transfer-Encoding: binary");
    header("Content-Length: ".filesize($root . $file));

    ob_clean();
    flush();
    readfile($root . $file);
}
else { echo "File not found"; }
?>

詳細はこちら

于 2012-04-11T17:40:52.923 に答える