2012-01-14 13 views
5

私はAsp.Net MVC 3/knockout.jsサイトで複数のユーザーのWebサイトに関する情報を保存しています ここでは、モデルAjaxのポストを使って安全なセービングを処理するためのベストプラクティスasp.net MVC 3

class{ 
string Id 
string Name 
string Url 
string Description 
} 

非常に応答性の高いUIを構築して、すべての読み込み保存などをAjaxで行います。

したがって、ユーザがsomウェブサイトを自分のリストに追加し、json文字列を保存することをクリックすると、コントローラ内のActionMethodに投稿されるというシナリオです。

すべて正常です。

問題は次のとおりです。

どのように私は、ユーザーがIDを改ざんしていないと、実際にいくつかの他のユーザーのウェブサイトについての情報を保存されていることを確認することができますか?

IDはもちろんhidddenですが、ウェブ知識のある悪意のある人は簡単にIDを変更できます。

+0

以前にユーザーを認証していませんか?ユーザーIDは使用できませんか? –

答えて

2

認証を使用する必要があります。 Authorize属性を使用して更新を実行するアクションを装飾します。これにより、AJAXリクエストを送信しているユーザーが認証され、ユーザー名を変更できなくなります。次に、彼が更新しようとしているサイトのIDが彼に属しているかどうかをあなたのデータベースにチェックインします。もちろん、ユーザーとサイトの間のマッピングを含む表があります。

ユーザーがサイトIDを改ざんして、自分に属していないサイトの値を設定した場合、コントローラーのアクションでは、クエリを実行して特定のサイトIDが所与のサイトIDに属するかどうかを検証しますユーザー名。彼は暗号化された認証クッキーに保存されているので、パスワードをすでに知っている場合は別のユーザー名でサインインしない限り、ユーザー名を改ざんすることはできません。

関連する問題