16

ログインしたユーザーがダウンロードできるドキュメントを含むフォルダーをドキュメントと呼びます。これらには非常に機密性の高い情報があります。フォルダを保護するにはどうすればよいですか。私はPHPのバックグラウンドを持っているので、何か見落としているかどうか知りたいです。

.htaccessでフォルダを保護します。また、ユーザーが[ダウンロード]をクリックしても、フォルダが表示されることはありません。ダウンロードは、フォルダ名を削除するphpを介して強制的に実行されます。

もちろん、ユーザー領域を保護するために、すべての入力フィールドにサニテーションと検証を実装し、SQLInjectionsに注意しています。SSL接続を使用します。すべてのphp警告をオフにしました。セキュアエリアはSESSION変数を使用してアクセスを制御し、パスワードの変更などの特別なタスクのためにユーザーを再確認します。さらに、10分のタイムアウト機能があり、その後、ユーザーは詳細を再入力する必要があります。

どんなに小さなアドバイスでも大歓迎ですので、できる限り徹底していきたいと思います。

4

2 に答える 2

37

ファイルをWebルートの外に置きます。次に、PHPを使用して、ファイルをスクリプトに渡します。そうすれば、誰もファイルに直接リンクして、コントロールをバイパスすることはできません。(当然、ユーザーがそのファイルを取得する権限を持っていることを確認した後にのみこれを行うスクリプトを確認してください)。

サンプルPHP:

<?php
    if (!isset($_SESSION['authenticated'])) {
        exit;
    }
    $file = '/path/to/file/outside/www/secret.pdf';

    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;
?>
于 2012-05-31T13:06:05.743 に答える
0

John Condeに加えて、dl urlを他の意味のないフォルダに書き換えて、アクセスを超えようとするユーザーをハニーポットにすることができます。

そして、この種のルールをhtaccessに追加します

Options -Indexes

<files .htaccess>
  order allow,deny
  deny from all
</files>

#Add all file you want to protect except the one you share...
<FilesMatch "\.(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$">
  Order Allow,Deny
  Deny from all
</FilesMatch>
于 2012-06-01T09:31:37.217 に答える