2

私は求人サイトを持っているので、サーバーにアップロードされ、公開されているフォルダーの場所に保存されている履歴書がいくつかあります。許可されていない人が他の人の履歴書にアクセスするのを防ぐために、Apache、phpレベルで何ができるのか疑問に思っています。

私は持っています

  1. ディレクトリブラウジングを無効にしました
  2. htmlに偽のリンクを作成し、それを.htaccessで別の場所にマップします

..等

ブラウザのURLに表示されるファイル名を完全に非表示にする方法があるのではないかと思っています(application / pdf ..etcのようなヘッダーを使用して、ファイルのコンテンツをその場で読み取ることができます)これは可能ですか、それとももっと良い方法がありますかそれらをMySQLDBに保存するような方法ですか?

4

3 に答える 3

5

ファイルをドキュメントルートの外部に保存し(サーバーがデフォルトでURLをそのルートにマップしないように)、認証されたユーザーを確認し、履歴書の内容をそのユーザーにのみストリーミングするスクリプトを使用します。

例えば...

<?php

session_start();

include 'app.php';

$userAuthenticated = (new Auth)->check($_SESSION['username']);

$file = isset($_GET['file']) ? 
        $_GET['file'] :
        FALSE;

$file = FILES_PATH . DIRECTORY_SEPARATOR . preg_replace('/[^\w.]/', '', $file);

if ($userAuthenticated AND file_exists($file)) {
    readfile($file);
} else {
    header('HTTP/1.1 403 Forbidden');
    echo 'You\'re not authenticated!';
}

このコードはあなたに一般的な考えを与えるはずです。

于 2012-05-29T03:26:15.913 に答える
2

docrootでユーザーがアップロードしたファイルを許可しないでください。他の人から提供されたコンテンツをホストしているため、これは非常に安全ではありません。

ユーザーがアップロードしたファイルを、ユーザーが指定した名前で保存することを許可しないでください。誰かがsomescript.phpをアップロードし、その名前を付けてdocroot内に保持する場合を想像してみてください。誰でも実行できます。

docrootの外部にファイルを保存し、ファイルの詳細(元の名前、mimeタイプなど)をデータベースに保持し、readfile()または同様のスクリプトを使用してファイルにアクセスします。これらのファイルへのアクセスを、アクセス権を持つことになっている人にのみ許可してください。

于 2012-05-29T03:27:22.560 に答える
0

.htaccessrewriteを使用できます。

phpでヘッダーとreadfile()関数を使用し、ファイルIDを変更してmysql dbに保存してから、アップロードディレクトリの.htaccess内のすべてを拒否するようにしてください。

于 2012-05-29T03:25:57.743 に答える