2012-01-22 26 views
0

私はレコードを作成するためのGETアクションを持っています。ページはややダイナミックなので、データを保持するためのモデルは使用しません。私はいくつかのOAuthをやるために出発し、後で作成画面に戻るだけです。データを戻すために、私はクエリ文字列でリダイレクトしています。私は、GETアクションでクエリ文字列を解析し、ビューを表示します。問題は、クエリ文字列がブラウザに表示されていることです。擬似センシティブデータが表示されます。クエリ文字列パラメータを隠す

データを転送するためにクエリ文字列を使用しているだけなので、ブラウザに表示されないようにクエリ文字列を捨てることができるかどうかは疑問です。

それ以外の場合は、リダイレクトせずに別のアクションに移動する方法はありますか?私が "他の"アクションメソッドを直接呼び出すと、元のアクションのビューを見つけようとしています。私は明示的に行をreturn View("create", viewModel)に変更することができますが、それは本当に汚れているようです。

答えて

2

POST要求を受け入れるようにアクションを変更することを検討する必要があります。少なくともこれにより、機密情報がブラウザに表示されなくなります。セキュリティを強化するには、SSLを介してサイトを提供する必要があります。

もう1つのことは、機密値またはクエリ文字列全体を暗号化することです。唯一の問題は、ユーザーがログインする必要がない限り、これもブラウザの履歴に保存されることです。

+0

POSTにリダイレクトできません。 OAuthプロセスが復帰すると、常にGETが使用されます。 POST経由でリダイレクトする方法はないようです。つまり、内部的にWebリクエストを作成することはできますが、これは複雑すぎるようです。 –

0

あなたのアクションメソッドがあまりにも多くをやっているようです。認証/承認は別個の懸念事項であり、アクションメソッドの一部であってはならない。認証作業をアクションフィルタに移す方が良いでしょう。

承認属性を拡張し、認証作業を行うためにOnAuthorizationメソッドをオーバーライドするクラスを作成します。

これにより、コントローラのアクションメソッドがPOST要求を受け入れることができます。

+0

OAuthは、ユーザーが他のサイトに情報へのアクセスを許可するためのWeb標準です。だから、私はユーザーのGoogle Analyticsのデータ、またはTwitterのデータやFacebookのデータを取得することができます。私の場合、リフレッシュトークンと呼ばれるものを要求しているので、いつでもサーバー上のデータを取得できます。ユーザーは実際に私のシステムに認証されていません。彼らは自分のデータにアクセスできるようにしています。 –

+0

実際のコントローラーアクションとは別の懸念事項ではありませんか?あなたの行動を続ける前にトークンが必要なようです。 Authorization属性がニーズに合わない場合でも、これらのアクションを実行するためにIActionFilterを実装できます。 – chandmk

+0

ユーザーは既にログインしています。システムにアクセスしようとしていないため、データにアクセスしようとしています。 –

関連する問題