これは簡単な質問であると思います。ここが質問するのに適した場所であることを願っています。
編集:おそらく、これにより、議論、提案、および回答がもう少し明確になります:HTML Webページの入力要素にプレーンテキストのパスワードを渡す以外に選択肢がない状況を考えると、最もまた、wpfパスワードボックスを使用してユーザーからパスワードを取得していることを考えると、そのパスワードを処理できる安全な方法、パスワードボックスからパスワードを.SecurePassword
取得するために使用し、以下に詳述する関数を使用してその安全な文字列を入力に渡します要素を作成し、すぐにフォームをサーバーに送信します。
私は、オフィスのプロセスを自動化する小さな WPF アプリケーションを作成しました。そのアプリケーションの一部として、ユーザー ID とパスワードが外部ベンダーに渡されます。このアプリケーションはユーザーのデスクトップで開いたままになるため、このプロセスは 1 日に複数回実行できます。
アプリケーションを作成したので、パスワードはユーザーが wpf パスワード ボックスに 1 回入力するだけで、パスワード プロパティはベンダー サイトで必要な場合にのみアクセスされます。パスワードを別のプロパティまたはテキスト文字列変数に渡すことはありません。
私の質問は、このアプローチのセキュリティに関係しています。私は IT セキュリティの専門家ではありません。正直なところ、これは内部で実装されているため、問題が発生するとは考えていませんが、パスワード ボックスがそのパスワードをどのように保存するかを確認したかったのです。
このシナリオでは、パスワードがプレーン テキストでメモリに保存されるのは、アプリケーションから外部ベンダーのアプリケーションに渡される瞬間のみであり、これは多かれ少なかれ避けられないリスクであると理解しています。外部ベンダーから API が提供されていないため、ベンダー サイトを利用するのが最善の方法ですinput element.value = passwordbox.password
誰かがこのアプローチの潜在的なリスクを強調できますか?代替方法が存在する場合は代替方法、またはそれらが存在する場合はセキュリティの議論です。
繰り返しますが、これは 1 つの部門が社内で使用する小さなアプリです。問題が発生するとは考えていませんが、それに関するいくつかの質問に回答する予定です。Microsoft のドキュメントを確認しましたが、より経験豊富な人が追加するものを持っているかどうかを確認したかったのです。
ご協力いただきありがとうございます。
編集: まだこれに取り組んでいますが、考慮に入れているいくつかの良いフィードバックを得ました. Mare Infinitus が投稿したページ ( http://blogs.msdn.com/b/fpintos/archive/2009/06/12/how-to-properly-convert-securestring-to-string) のアプローチを採用しました。 aspx
これが私が今持っているものです:
ユーザーは自分のパスワードを WPF パスワード ボックスに入力します。私は次の機能を持っています:
Private Function ConvertToUnsecureString(ByVal SecurePassword As SecureString) As String
If SecurePassword Is Nothing Then Throw New ArgumentNullException("SecurePassword")
Dim unmanagedString As IntPtr = IntPtr.Zero
Try
unmanagedString = Marshal.SecureStringToGlobalAllocUnicode(SecurePassword)
Return Marshal.PtrToStringUni(unmanagedString)
Catch ex As Exception
Finally
Marshal.ZeroFreeGlobalAllocUnicode(unmanagedString)
End Try
End Function
その関数を使用して、次のように入力要素にパスワードを渡します。
InputEl.value = ConvertToUnsecureString(Me.PasswordBox.SecurePassword)
現時点では、それで十分だと思われますが、より安全なさらなる戦略/アイデアにまだ興味があります.