4

PHP と MySQL データベースを使用してメンバーシップ サイトを作成しています。ユーザーがユーザー名とパスワードを使用してログインする手段があります。すべてのかなり標準的なもの。

登録ユーザーがサンプル動画ファイルをダウンロードできるようにするシステムも整えました。それもうまくいきます。

ただし、問題は、ファイル システムを把握できる人なら誰でも、これらのファイルを直接ダウンロードできることです。

「videos」というビデオ コンテンツを含むメイン フォルダがあり、「videos」内に「planes」、「trains」、「automobiles」などのサブフォルダがあり、それぞれの内部に別のフォルダ (「jets」など) があるとします。 '、'prop' および 'spy' for 'planes') と、各サブカテゴリの特定のビデオ。

そのため、誰かがファイル システムを知っている場合、ファイル名を知っていれば、入力するだけhttps://www.myvideosite.com/videos/planes/jets/f15.wmvで心ゆくまでダウンロードできます。(ご覧のとおり、安全な接続があり、Linux を実行している Apache サーバー上にあります。)

これは、発見される前にプラグインしたい主要なセキュリティ ホールです。私は .htaccess のことを調査しましたが、それを使って「ビデオ」フォルダー全体にアクセスできなくなることがよくあります (認めますが、私はこれらすべてに慣れていません!)。

動画ファイルをサイトのルート フォルダーの外に置くことについても読んだことがありますが、それはさらにわかりにくいようです。

簡単に言えば、メンバーではないが、ファイルシステムが何であるかを (何らかの手段で) 発見する可能性のある人々によるダウンロードを一体どのように無効にできますか? 私の意見では、これは簡単なはずですが、残念ながら、確かな答えが見つかりません。

4

3 に答える 3

4

ビデオフォルダを.htaccessファイルで保護し、phpスクリプトを介してすべてのリクエストを「ルーティング」できます。

RewriteEngine on
RewriteRule (.*) index.php?file_id=$1 [L]

そして、index.phpで認証を行います

session_start();
// get filename from database or somewhere else
$filename = getFilename($_GET["file_id"]);

if ($_SESSION["is_logged_in"]) {
    readfile($filename);
}
于 2013-02-26T00:10:16.390 に答える
0

単純な.htaccess/htpasswd認証、ダイジェスト、または基本を使用します。

http://www.askapache.com/online-tools/htpasswd-generator/

于 2013-02-26T12:39:40.727 に答える
0

.htaccess に問題がある場合の回答は次のとおりです。

これが public_html である場合は、その親ディレクトリに移動して、ディレクトリ名「videos」を作成します。(public_html にない場合は、../ をパスに追加する必要がある場合があります)。pathinfo は検証の問題を処理し、誰かがそこにパスを忍び込ませようとした場合にファイル名のみを返します。これに download.php という名前を付けると、次のようになります。

download.php?video=fun.mp4

ビデオ ディレクトリから fun.mp4 というファイルをロードします。

<?php
// do your user authentication
$video_directory = "../videos/";
$file = pathinfo($_GET["video"], PATHINFO_BASENAME);
if( $user_is_logged_in )
{
    if( file_exists( $file ) readfile( $video_directory . $file );
}

?>
于 2013-02-26T00:39:30.737 に答える