2011-07-01 8 views
3

私は、ユーザーが提供するクレジットカード情報を含むユーザーコントロールを作成しています。コントロールは、勘定コード、有効期限、およびCCVを収集します。Silverlightでは、ユーザーコントロールの内容を完全に非公開にできますか?

このコントロールの唯一の出力を、暗号化された文字列を表す単一のプロパティにします。

私はすでにこのプロパティを持っています。私は自分のコントロールをプライベートにし、パブリックプロパティを使用しない方法でバインディングを設定しました。すべてが機能しています。私はちょうど何とか視覚的ツリーの検索を無効にし、FindNameメソッドがコントロールからクレジットカード情報を消耗できないようにしたい。

これは過度に思われますが、これを行う方法さえありますか?

+0

FindNameはプライベートプロパティへのアクセスを許可しないため、すべて設定する必要があります。 – Denis

+0

私の経験から私的な_controls_へのアクセスを許可しています。 – Jordan

答えて

0

コントロールに情報を格納しないでください。 BackgroundWorkerやVisualTreeで見られないものから処理するのはどうでしょうか?その後、暗号化された文字列のみを使用してコントロールに返信します。

+0

ユーザー入力のポイント。私は即座にクレジットカード情報を暗号化し、処理のためにサーバーに送信します。しかし、ユーザーに公開する必要があります。他のコントロールやオブジェクトには公開しないでください。 – Jordan

0

Funcが使用されているテンプレート化されたSL BussinessApplicationでどのように処理されたかを見てきましたか?

public string Password 
{ 
    get 
    { 
     return (this.PasswordAccessor == null) ? string.Empty : this.PasswordAccessor(); 
    } 
    set 
    { 
     this.ValidateProperty("Password", value); 

     // Do not store the password in a private field as it should not be stored in memory in plain-text. 
     // Instead, the supplied PasswordAccessor serves as the backing store for the value. 

     this.RaisePropertyChanged("Password"); 
    } 
} 

/// <summary> 
/// Gets or sets a function that returns the password. 
/// </summary> 
internal Func<string> PasswordAccessor { get; set; } 
+0

私が心配しているその私の財産ではありません。内部的にプライベートビューモデルにバインドしています。私の懸念は 'TextBox.Text'です。私はそれが過剰であることを知っていますが、私はユーザーデータを保護することに熱心です。 – Jordan

+0

ViewModelに保存すると暗号化されますか?そうでない場合は、クライアントマシン上のプレーンテキストでメモリに格納されます。 VMがプライベートであるかどうかは関係ありません。 –

+0

したがって、ユーザーが入力するときに番号を直接暗号化するカスタムテキストボックスが必要です。私は本当にこれが最初から最後まで安全であることを望んでいます。たぶんそれは過度だ。知りません。 – Jordan

関連する問題