2

私は今日、新しいサーバーでいくつかのことを試しましたが、iveはMVCアプリケーションで行ったことに大きな欠陥を見つけました。

つまり、アプリケーションで何が起こっているのかというと、人々はページにアクセスしてログインでき、ログインすると、サーバー上の自分のフォルダーにファイルをアップロードできます。その後、必要なときにアクセスできます。しかし、問題が見つかったのは、正しいURLを入力すれば、必要なフォルダを表示できるということです。例えば ​​:

URlの名前は次のようになります。testnameweb.com/Upload/ testUserName / testfilename.pngこの場合、urlを入力すると、testfilename.pngファイルが表示されます。ただし、同じ人が入力した場合:testnameweb.com/Upload/

彼らは任意の人々のフォルダを見ることができ、彼らが望む方法でサーバー上を閲覧することができます。

これを防ぐ方法はありますか?

4

2 に答える 2

7

最初のステップは、これらのファイルを一般公開されていないフォルダーに配置することです。たとえばApp_Data。または、アプリケーションルートの完全に外側にあるフォルダ。次に、ファイルをユーザーごとにフォルダーに整理できます。したがって、各ユーザーは独自のサブフォルダーを持ちます。次に、ファイル名のみを渡し、現在認証されているユーザーに基づいて適切なファイルを提供するコントローラーアクションを記述できます。

[Authorize]
public ActionResult File(string filename)
{
    string username = User.Identity.Name;
    // now that you know the currently connected username and the filename
    // go and find the corresponding file and stream it as a result
    ...
}

また、現在接続しているユーザーがファイルを参照できるようにリンクを提供するには、次のようにします。

@Html.ActionLink("Open foo.txt", "file", new { filename = "foo.txt" })
于 2012-04-04T17:47:05.027 に答える
2

URLをファイル名に変換するUploadControllerがあると仮定して、ログインしたユーザーがファイルを表示する前に、そのコントローラーでファイルを表示する権限を持っていることを確認します。

于 2012-04-04T17:47:46.820 に答える