1

状況は次のとおりです。

  • C#Windowsフォームアプリケーション
  • ASP.NETWebアプリケーション
  • 両方とも、同じデータベース内のカスタムユーザーテーブル(usename / password)で認証し、両方のアプリケーションで使用されるUserオブジェクトを作成します

ユーザーがWindowsフォームアプリケーションにログインしていて、デフォルトのブラウザー(IE、Chrome、Firefoxなど)でASP.NETWebアプリケーションのページを開くためのURLを起動したいと考えています。ユーザーがWebアプリケーションに個別にログインする必要がないように、現在のユーザー名/パスワードをWindowsフォームアプリケーションからASP.NETWebアプリケーションに渡します。

私たちの調査に基づいて、私たちが見つけたいくつかのオプション(および欠点)は次のとおりです。

  • ユーザー名/パスワードをURLでQueryStringsとして渡し、WebアプリケーションでUserオブジェクトを作成します
    • 安全ではありません(パスワードはURLに表示されます)
  • ユーザー名/パスワードをターゲットURLにPOSTするJavaScriptOnLoad関数を含む一時的なHTMLページをクライアントマシンに作成し、WebアプリケーションでUserオブジェクトを作成します
    • (データをURLに直接POSTし、C#を使用してデフォルトのブラウザーでURLを表示する方法が見つかりませんでした)
    • 安全ではありません(パスワードは一時ページに表示されます)
  • 「Handoff」テーブルを作成して、ユーザー名/パスワードをキーとともに保存します。このキーは、QueryStringを介してページに渡され、ページの読み込み時にテーブルから削除され、WebアプリケーションでUserオブジェクトを作成します。
    • キーが傍受される可能性はわずかです(ハッカー)
  • Userオブジェクトを格納し、Webアプリケーションで取得する別のMongoDBを用意します
    • 実行中の個別のソフトウェア(MongoDB)-追加の障害点

これはすべて、ユーザーが両方のアプリケーションにログインするためにユーザー名/パスワードを2回入力する必要がないようにするためです。

上記のオプションのどれが最も効果的ですか(最も安全で、オーバーヘッド/メンテナンスが最も少ない)?

また

デフォルトのブラウザで使用できるC#アプリケーションでフォーム認証チケット(Cookie)を作成する方法はありますか?

また

これを処理するためのより良い、安全な方法はありますか?

(編集)

また

ユーザーがWindowsフォームアプリケーションからすでに認証されている場合、Webアプリケーションにアクセスするためにユーザーにユーザー名/パスワードの再入力を要求することについての良い議論はありますか?もしそうなら、あなたは参照へのリンクを提供できますか?ベストプラクティス、Webセキュリティ標準など。

4

2 に答える 2

2

パスワードをsalt+MD5して、URLとともに送信することができます。

ただし、最初にサーバー上のスクリプトを指定する必要があります。このスクリプトは、ユーザーを認証して適切なCookieを作成し、URLにクレデンシャルがない状態で目的のページにリダイレクトします。

編集済み:または基本的に、ユーザーのセッションを保持したいことは何でもします

残念ながら、パスワードが関係している限り、100%安全にすることはできません。それでも、誰かがパスワードを視覚化できる場合は、ソルトされたパスワードをハッシュする(ソルティングとは、ハッシュする前にパスワードを他の文字列と連結する場合です) 。

  1. ソルトを使用してパスワードハッシュを生成します。
  2. あなたはそれを処理するために送ります(私は通常それを別のスクリプトのURLに入れるだけですが、それは好みの問題です)。
  3. サーバー上で同じソルトを使用してハッシュを生成し、送信されたものと照合します。
  4. ユーザーを認証し、元の場所にリダイレクトします。
于 2012-06-04T17:19:08.027 に答える
1

MátéGeleiの貢献に加えて、URLにタイムスタンプを含めて、タイムスタンプが現在の時刻から数秒以内に収まっていることを確認することもできます。これは少し追加された保護であり、ログイン試行がすぐに無効になることを保証します。もちろん、もう少し安全にするために、これの目的をどうにかして隠したいと思うでしょう。

これで100%安全になるわけではありませんが、保護のレベルが1つ上がります。

于 2012-06-04T17:54:48.107 に答える