Sto supportando un'applicazione Windows C # cheaccetta ed elabora la carta di credito. Ma a causa di nuove regole, ho bisogno di mascherare il numero della carta di credito mentre viene inserito, quindi se il primo numero è 4, è visibile fino a quando non viene immesso il numero successivo (ad esempio 9), quindi la casella di testo mostra * 9 .
Ho pensato di usare maskedtextbox ma poi i caratteri sono tutti "*" ma ho bisogno di mostrare l'ultimo carattere digitato.
Ci sono delle buone pratiche per farlo? tenere presente che ho bisogno di quei numeri e di eseguire le convalide prima che la carta di credito venga elaborata, quindi elaborare la carta di credito e archiviarla nel database. Ho già un campo CC nel database crittografato.
Qualsiasi suggerimento / aiuto sarebbe molto apprezzato.
risposte:
1 per risposta № 1Il modo semplice sarebbe avere due caselle di testo. Uno in cui l'utente inserisce effettivamente il numero in, un altro che mostra la versione mascherata di quell'input. Metti il controllo mascherato sul controllo di entrata.
Uso TextChanged
o KeyUp
eventi per tenere traccia delle modifiche e aggiornare.
per esempio
if (textBoxEntry.Text.Length <= 1)
{
textBoxMasked.Text = textBoxEntry.Text;
}
else
{
string lastChar = textBoxEntry.Text.Substring(textBoxEntry.Text.Length-1, 1);
textBoxMasked.Text = lastChar.PadLeft(textBoxEntry.Text.Length, "*");
}
Oltre a ciò, probabilmente hai problemi con PCIconformità. Non è sufficiente crittografare questi valori nel database, è necessario disporre di politiche di gestione delle chiavi, programmi di rotazione delle chiavi e quantità di heap in più. Si spera che tu sappia già tutto questo, ma solo menzionarlo se non ne sei a conoscenza.