0

サーバーに接続し、ユーザー名とパスワードを提供することで認証されるwinformクライアントがあります。

ユーザーは初めてユーザー名/パスワードをサーバーに送信します。その後、ログアウトしなかった場合は、もう一度認証を受ける必要はありません(GithubクライアントやWindows Live Mail

だから私は知りたい:

  • ユーザー名/パスワードが有効な場合、true / false値などの場合、どのサーバーが返されますか?
  • 次回の実行時に、ユーザーが前回認証されてログオンしているかどうかを確認するにはどうすればよいですか?どの値を正確にチェックする必要がありますか?データの改ざんを許可しないことを検討する
  • ハッシュ化されたパスワードをアプリの設定に保存した場合、別のパスワードを盗まないようにするにはどうすればよいですか?

(ここでstackoverflowで感謝することは避けられますか?;))

4

2 に答える 2

1

それはすべて、保護しようとしているリソースの価値に依存します。また、誰がローカルコンピュータにアクセスできるかなどについても。

  1. ユーザー名/パスワードをアプリケーションにキャッシュするだけです。ユーザーが初めてユーザー名/パスワードを入力すると、レジストリのどこかに保存されます。次回アプリを起動するときに、レジストリから読み取り、サーバーに値を提供します。

  2. これは明らかにセキュリティ上のリスクであり、誰かがレジストリからユーザー名/パスワードを読み取ることができるため、ユーザー名/パスワードを暗号化してから、encrypt-decrypt-string-in-netなどを使用してレジストリに保存します。

  3. 次の問題は、アプリで復号化キーをハードコーディングする必要がある場合があることです。つまり、アプリのバイナリにアクセスできる人なら誰でも、使用しているアルゴリズム/キーを見つけ出し、その知識を使用してレジストリに保存されているキーを復号化できます。しかし、この時までに、ほとんどの些細な試みは思いとどまるでしょう。代わりにCryptProtectData 関数を使用してみると、アプリで暗号化キーをハードコーディングする必要がなくなりますが、より複雑になります。

于 2012-12-25T16:16:10.963 に答える
0

ユーザー名/パスワードをアプリケーションにキャッシュしたくない場合は、代わりにHMAC認証を使用できます。ユーザー名/パスワードを使用して最初の呼び出し中にユーザーを認証しますが、認証が成功した場合、応答としてセッションキーが返されます。ここに示すように、そのセッションキーを使用して、残りの呼び出しを認証できます。

http://weblogs.asp.net/cibrax/archive/2012/12/05/using-mac-authentication-for-simple-web-api-s-consumption.aspx

よろしく、パブロ。

于 2012-12-26T16:30:11.307 に答える