[解決済み] SecureStringをSystem.Stringに変換する方法は?
質問
SecureStringからSystem.Stringを作成することによるセキュリティの確保解除に関するすべての注意事項 さておき どうすればいいのでしょうか?
通常の System.Security.SecureString を System.String に変換するにはどうすればよいですか?
SecureStringをご存知の方の多くは、SecureStringを通常の.NET文字列に変換してはいけないとお答えになることでしょう。 知っている . しかし、今、私のプログラムはすべて普通の文字列を使っていますが、私はそのセキュリティを強化しようとしており、SecureStringを私に返すAPIを使おうとしています。 ではない を使用してセキュリティを向上させようとしています。
Marshal.SecureStringToBSTR は知っていますが、その BSTR を取って System.String にする方法が分かりません。
なぜこんなことをしたいかというと、私はユーザーからパスワードを受け取り、それをhtmlフォームのPOSTとして送信し、ユーザーをWebサイトにログインさせるためなのです。 だから...これは本当に管理された暗号化されていないバッファで行う必要があります。 もし、管理されていない暗号化されていないバッファにアクセスすることができれば、ネットワークストリームにバイト単位のストリーム書き込みを行うことができ、それによってパスワードの安全性を保つことができると想像しています。 これらのシナリオの少なくとも1つに対する答えを期待しています。
どのように解決するのか?
を使用します。
System.Runtime.InteropServices.Marshal
クラスとなります。
String SecureStringToString(SecureString value) {
IntPtr valuePtr = IntPtr.Zero;
try {
valuePtr = Marshal.SecureStringToGlobalAllocUnicode(value);
return Marshal.PtrToStringUni(valuePtr);
} finally {
Marshal.ZeroFreeGlobalAllocUnicode(valuePtr);
}
}
管理された文字列オブジェクトの作成を避けたい場合は、生データにアクセスするために
Marshal.ReadInt16(IntPtr, Int32)
:
void HandleSecureString(SecureString value) {
IntPtr valuePtr = IntPtr.Zero;
try {
valuePtr = Marshal.SecureStringToGlobalAllocUnicode(value);
for (int i=0; i < value.Length; i++) {
short unicodeChar = Marshal.ReadInt16(valuePtr, i*2);
// handle unicodeChar
}
} finally {
Marshal.ZeroFreeGlobalAllocUnicode(valuePtr);
}
}
関連
-
[解決済み] 'IEnumerable<SelectListItem>' 型の ViewData アイテムで、キーが国であるものは存在しない。
-
[解決済み】ファイルへの読み書きの際に共有違反のIOExceptionが発生する C#
-
[解決済み] enumを列挙するには
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] C#で文字列のエンコーディングを手動で指定せずに、一貫性のあるバイト表現を得るには?
-
[解決済み] DateTime型の誕生日から年齢を計算するにはどうしたらいいですか?
-
[解決済み] Microsoft Officeをインストールせずに、C#でExcel(.XLSおよび.XLSX)ファイルを作成するにはどうすればよいですか?
-
[解決済み] UTF-8 byte[]を文字列に変換する方法
-
[解決済み] C#でByte[]Arrayをファイルに書き込むことはできますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「未割り当てのローカル変数を使用」とはどういう意味ですか?
-
[解決済み] エンティティタイプ ApplicationUser は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】GDI+、JPEG画像をMemoryStreamに変換する際にジェネリックエラーが発生しました。
-
[解決済み】トランスポート接続からデータを読み取れない:既存の接続は、リモートホストによって強制的に閉じられました。
-
[解決済み] [Solved] アセンブリ System.Web.Extensions dll はどこにありますか?
-
[解決済み】なぜこのコードはInvalidOperationExceptionを投げるのですか?
-
[解決済み] ...基礎となる接続は閉じられました。予期しないエラーが受信で発生しました
-
[解決済み】IntPtrとは一体何なのか?
-
[解決済み] LINQPad [拡張]メソッド [閉鎖]のお知らせ
-
[解決済み] .NETで文字列はどのように渡されるのですか?