問題タブ [securestring]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - SecureString の値を取得する最良の方法
私は、当座預金口座で最近の取引を行ってチェックする自動ツールを構築しようとしています(妻の購入をスパイしています笑)。このツールは、私のユーザー名とパスワードを SSL 経由で投稿し、銀行のページのコンテンツをスクレイピングして取引を行います。もちろん、すべてが SSL 経由で送信されますが、自動化するには、銀行のユーザー名とパスワードをどこかに保存する必要があります。
そこで、.NET 文字列、セキュリティ、および SecureString のうさぎの穴から始めました。ユーザー名とパスワードを SecureString に (1 文字ずつ) 入力するフォームを作成し、System.String を使用しないようにしました。次に、SecureString から char[] を取得し、そこから byte[] を取得し、char[] をゼロにし、DPAPI とコードに組み込まれたソルト文字列を使用して byte[] を暗号化し、暗号化された byte[] を Base64 に変換します。 System.String、byte[] をゼロにし、暗号化文字列をアプリケーション設定に保存します。
問題は、System.String にせずに HttpWebRequest の POST データに戻す方法です。私が思いついたのは、次の関数でした(これも、文字列を作成せずに文字を URL エンコードします)。
処理が終わったら、char[] をゼロにします。また、返された byte[] を HttpWebRequest ストリームに書き込んだ後、必ずゼロに設定します。これは安全ですか、それとも GC は char[] および byte[] オブジェクトのコピーを作成しますか? これは System.String を使用するよりも優れていますか? 安全でないコードを使用し、すべてをアンマネージ メモリで行うという他の投稿を読みましたが、最終的に HttpWebRequest に byte[] を取得する必要があります。
c# - Oracle DB と SecureString
現在、ユーザーパスワードをSecureString
. DBへの接続がリセットされた場合に備えて、これも保持されます。
私の問題は、このパスワードをに渡そうとしていますが、OracleParamater
それがサポートされているかどうかわかりません。
Oracle のOracle.DataAccess
dll は、または をサポートしていますSecureString
かBStr
? それを文字列に変換する必要がある場合、それはSecureString
.
- - 編集
SecureString
暗号化されていないパスワードのコピーをできるだけ少なくすることで、攻撃対象領域を減らすことが目的であることはわかっています。問題は、ある時点でパスワードを解読して使用する必要があることです。char[]
またはBStr
安全な文字列自体を渡すことができればOracleParameter
、呼び出しが戻った後にそれをクリアできます。しかし、Oracle に渡すために文字列を作成する必要がある場合は、パスワードの新しい不変コピーを作成しただけです。ですから、その時得たものはあまりありません。
c# - Rfc2898DeriveBytes + PBKDF2 + SecureString 文字列の代わりに安全な文字列を使用できますか?
タイプGetPassword
を返す関数があります。SecureString
このセキュリティで保護された文字列を に渡しRfc2898DeriveBytes
てキーを生成すると、Visual Studio でエラーが表示されます。私の限られた知識によるとRfc2898DeriveBytes
、安全な文字列ではなく文字列のみを受け入れるためです。これに対する回避策はありますか?
c# - SecureStringとIIS?
ユーザーが
ASPX
ページを持っています。textox
(パスワード用の)入力があります。ユーザーは自分のパスワードを入力します。
ページはIISに送信されます。
それは最初にiisに行きます。
この段階までに、パスワードはプレーンテキストでメモリに保存されます。
現在、Asp.netはパスワードをSecureStringに入れています。
いくつかの計算を行った後、ページはクライアントに送信されます。
IIS POVから:
彼はまだ実際にはパスワードをプレーンテキストとして見ています...そうではありませんか?
c# - 文字列を明示的にセキュア文字列に変換する方法
テキストボックスに入力したテキストをC#でセキュアストリングに変換したい。
php - PHP ファイルで MySQL データベースへのパスワードを非表示にする問題
ユーザーが「送信」をクリックすると、MySQL データベースに接続してフォームからのデータで更新する PHP ファイルが呼び出されます。
質問は、PHP コード ファイルで MySQL データベースへのパスワードをマスク/非表示にするにはどうすればよいですか?
「config」ファイルの操作や、他の人がアクセスできないように別のディレクトリに移動することについて、あらゆる種類のことを読んでいます-理論的には理解していますが、実際に取るべき手順は何ですかこれを実現するには?どこから始めればいいですか?ステップ 1、ステップ 2 などは何ですか? 誰もがコードの小さなスニペットを提供しているようですが、これに関する最初から最後までの適切なチュートリアルは見つかりませんでした。
アカウントとデータベースが置かれている GoDaddy に電話して、技術サポート担当者が助けてくれるかどうかを確認しました。
誰か助けてくれませんか?
c# - C# で、パスワードなどの機密データを処理する適切な方法は何ですか?
このアプリは、ユーザーがドキュメントの暗号化解除に使用するパスワードを入力するテキスト ボックスを含むフォームを表示します。
次のようなコードがあります。
しかし、技術的に言えば、これはセキュリティ上の欠陥であると言われました。アプリケーションを閉じた後でも、パスワードを表すデータがメモリに残る可能性があるからです。
System.Security.SecureString クラスを使用しようとしましたが、CoTaskMem へのポインターを処理しているため、問題が悪化しているようです。
ご覧のとおり、アプリケーションをより安全にしているようには見えません。遅かれ早かれ、入力 (passwordTextBox.Text) を受け取り、DecryptDocument() に渡すことができる文字列に変換する必要があるからです。関数。
この問題を解決する方法はありますか? または、このセキュリティの脆弱性に対処する必要がありますか?
c#-4.0 - Securestring および文字列データを非表示にするその他の方法
最近SecureStringに出会いましたが、ほとんどの人が知っているように、使用したい関数のほとんどがSecureStringではなく文字列をパラメーターとして受け入れるため、使用できません。
では、SecureString を使用するにはどうすればよいでしょうか。
複数のプログラム間で文字列を渡す必要がある場合、文字列が機密情報である場合、プレーン文字列と比較してバイト配列の方が安全ですか?
c# - C#で.NET SecureStringから単一の文字を読み取る?
WPFのPasswordBoxは、パスワードをスヌーパーから隠すSecureStringを返します。
問題は、最終的にパスワードの値を取得する必要があることです。ネット上で私が見つけた提案はすべて、値を文字列にコピーすることで、スヌーパーの問題に戻ります。
しかし、実際に考えてみると、文字列としての値は実際には必要ありません。つまり、パスワードで何をしますか?それをハッシュしてから、結果を保存されたハッシュと比較し、それらが同じであるかどうかを確認します。
つまり、SecureStringを文字列に変換する必要はなく、文字列内の個々の文字を反復処理できる必要があります。
しかし、どのように?
管理された文字列に変換せずに、C#でBSTRの個々の文字をループするにはどうすればよいですか?
編集:リンクが消えた場合の解決策:
Marshallクラスは、指定されたオフセットでIntPtrから個々のバイトまたはintを抽出できるメソッドを提供します。BSTRオブジェクトには、2つのヌルバイトで終了する16ビット文字の配列が含まれています。したがって、ループすることでそれらにアクセスできます。
(私はそのフロー制御を気にしません。ダミー値をbに事前入力するのではなく、do ... whileを使用したか、内部ブレークを使用してfor(;;)ループを使用しました。または、長さをループしていると思います。これについては、以下で説明します。)
また、私はおそらく使用します:
それぞれの下位バイトだけでなく、Unicode文字全体を読み取ります。
BSTRの長さは、次の方法で取得できます。
これは、文字数ではなく、ヌルを含まないバイト数です。
また-使用:
security - PowerShell の ConvertFrom-SecureString -key の安全性
私は、達成するのが難しいが頻繁に変更されるいくつかのプライベートデータを含むいくつかの文字列を含むモジュールを持っています。このスクリプトをさまざまなマシンに配置する必要があります。このスクリプトにアクセスして、出力を導出するために使用される情報を持っていない人がコードを読み取る可能性があります。
私は時々変化する文字列について本当に心配しているので、それらの値を安全な文字列として入力し、キーを使用して暗号化し、xml ファイルにダンプするスクリプトを作成することを検討しています。XML ファイルは、文字列を提供するために使用されます。そのデータを必要とするこのモジュールからコマンドを実行する人は、文字列を復号化できるようにキーを提供する必要があります。
これは基本的に私が期待していることですが、オブジェクトを扱います
文字列は、AES とも呼ばれる Rijndael 暗号化アルゴリズムを使用して暗号化されることを理解しています。
スクリプトへのアクセス権が与えられた場合、xml ファイル内の暗号化されたキーを解読するには、どれだけの労力が必要でしょうか?