2016-04-25 7 views
2

私はasp.net mvcの完全な初心者であり、率直にもコーディングしています。私は最初のMVCアプリケーションを作成しています。私はasp.netアイデンティティシステムを設定し、それは正常に動作しています。私はいくつかのタスクを実行する権限を得るために、ログインしたユーザーがシリアルキー(14アルファ数字文字)を提供するように、私のコントローラにいくつかのアクションメソッドを用意しています。私はカスタムAuthorizeAttributeの記事のトンを読んだが解決策を作る代わりに、私はそれがあるべきであるようにそれをより困難にしている。asp.net mvcで特定のアクションを実行するために、ログインしたユーザーを文字列キー(シリアルキー)から検証する方法はありますか?

これらのシリアルキーは、アプリケーションのどこかのバックエンドデータベースに保存する必要があります。特定のアクションメソッドにアクセスしたいユーザーは、シリアルキーを提供する必要があります。 シナリオ全体は、ソフトウェアまたはウイルス対策ソフトウェアのライセンスに似ています。現実的な例やこれに関する具体的なチュートリアルはあまりにも助けになります。

ありがとうございました

+0

ASP.NET/MVC/Identityのどのバージョンですか? –

+1

私はハッシングを提案します。シリアルキーのハッシュ入力は、ハッシュ値と比較して、ハッシュされたシリアルキーの記憶域に一致します。免責事項:Web開発者ではありません。 – Karolis

+0

@lc。私は同一性2のasp.net mvc 5を使用します。 –

答えて

0

OPの質問には、ハッシュの例がありますが、私はトピックを拡張します。 Webセキュリティの話をしているときに最初に思いついたのは、Hashingです。 ハッシュとは何ですか?ハッシングは、一方向のデータエンコーディングです。例えば、あなたはパスワードを持っていますが、それをどのようにして保護しますか?ハッシュしてデータベースに保存します。ユーザーが2回目のログインを試みると、パスワードがハッシュされデータベースに格納されます。今すぐパスワードを入力し、ハッシュしてデータベースに一致するかどうか調べます。あなたはハッシュ化されたシリアルキーの値が含まれますストレージへのアクセスを持っているしたい

  • :あなたの特定のケースについては

  • ユーザが何らかのシリアルキーを入力すると、同じ方法(シリアルキーをハッシュするのに使用)を使用してハッシュします。
  • ユーザーが提供する価値のためにストレージ内で一致するものを探します。一致するキーがある場合は、正しいシリアルキーを挿入してください。塩をハッシングの

例:SOMSDNからのデータのハッシュに

static byte[] GenerateSaltedHash(byte[] plainText, byte[] salt) 
{ 
    HashAlgorithm algorithm = new SHA256Managed(); 

    byte[] plainTextWithSaltBytes = 
    new byte[plainText.Length + salt.Length]; 

    for (int i = 0; i < plainText.Length; i++) 
    { 
    plainTextWithSaltBytes[i] = plainText[i]; 
    } 
    for (int i = 0; i < salt.Length; i++) 
    { 
    plainTextWithSaltBytes[plainText.Length + i] = salt[i]; 
    } 

    return algorithm.ComputeHash(plainTextWithSaltBytes);    
} 

。 記事についてhashing

.NET hashing class for multiple times.

残念ながら、ソフトウェアのセキュリティへのたくさんあります。ウェブアプリケーションに関しては、あなたの研究を幾分安全にする前に研究をしなければなりません。

+0

しかし、それは私がそれをデータベースに保存しておきたいと気づきましたか?できますか? –

+0

ハッシュされたシリアルキーをDBにインポートするためのアプリケーションが必要です。ウェブアプリケーション用の管理ツールです。私がその点を見逃しているかどうかを詳しく教えてください。 – Karolis

+0

私が達成したいのは、私がAviraのウイルス対策ソフトを購入するようなものです。売り手はDVDとシリアル番号が書かれたカードを私に渡します。私はソフトウェアをインストールするときシリアルと私はそれが罰金と有効なキーが私のソフトウェアがライセンスされるようになるので、私はエラーを与えるだろうシリアルを入力してください。 –

0

セッション変数としてシリアルキーを保存できました。これは、セッションがタイムアウトするたびに、ユーザーが各アクションのシリアルキーを提供する必要があることを意味します。検証されたユーザーと照合できるユーザーIDのシリアルキーを保存するために別のデータベーステーブルを作成するほうが良いでしょう。

+0

あなたが現実的な例を与えればそれは間違いなく助けになるでしょう。 –

関連する問題