2011-10-18 11 views
1

私は、管理コンテンツへのアクセスが許可されていないユーザーを単にリダイレクトするカスタム[AuthenticationFilter]を持っています。POSTアクションをフィルタリングする理由はありますか?

私はまた、ファイルのアップロードを処理するための

[HttpPost] 
    public ActionResult Index(HttpPostedFileBase file) {} 

を持って、

[AuthenticationFilter] 
public ActionResult Index() {} 

にフィルタを適用します。しかし。ここに属性が必要ですか?

私の腸の本能は私にはありません。 uploadButtonは最初の方法で読み込みがブロックされるため、ページにファイルをPOSTする方法はありません。

私が想像することができる唯一のセキュリティ上の懸念事項は、クロスサイトAJAXの投稿ですが、これは可能ではないはずです。イントラネットサイトであるため、少なくとも可能性は低いです。

[AuthenticationFilter]をファイルハンドラに適用する理由はありますか?

答えて

3

あなたのクライアント側のコントロール(アップロードボタンを無効にする)によって、サーバーに何かが止まるのを防ぐことは決してありません。エンドユーザーはを完全にクライアントで何が起こるかを制御します。コントロールを有効にしたり、隠しフィールドを削除または変更したり、ブラウザのリクエストを傍受したり、ブラウザを完全にバイパスしたり、独自のリクエストを(任意のファイルで)行うことができます。

サーバーにセキュリティを追加するオプションがある場所は、実行する必要があります。ブラウザコントロールを使用するだけで停止できるリクエストはありません。

+0

Javascriptを使用してコントロールを非表示にしているとはどういう意味でしょうか。しかし、この場合、私はコントロールをクライアントにまったく送信しません。サーバー側は停止しています。だから私はあなたが "完全なコントロール"を意味するかどうかは分かりません。 –

+2

エンドユーザーは独自のアップロードボタンを作成できます。彼らはあなたのサービスを正確に模倣して投稿する独自のフォームを作成することができます。 Curlを使用して、ブラウザから送信されたリクエストと区別できないリクエストを使用して、プログラマチックにサイトに直接投稿することができます。彼らは自分のマシンを離れてあなたのサーバーに行くことを完全に制御します。 –

2

誰かがFiddlerのようなものを使ってPOSTを送信することはまだ可能であると思います。方法を確保する努力は最小限であるので、私は残念ながら安全である方が良いと言います。

2

私は質問を回し、認証フィルタをメソッドに適用しない理由があるかどうか尋ねます。この方法の危険性があることがわかっている限り、フィルタを適用しないでください。あなたのAuthenticationFilterにパフォーマンスの問題がなければ、それを行ってください。実際には、コントローラ全体が承認されたユーザによって使用されることがわかっている場合は、コントローラレベルでフィルタを適用してください。

関連する問題