Grazie Daniele per il consiglio e diciamo che da questa mattina ho fatto passi da gigante dal punto di vista della crittografia :D ...
allora ho utilizzato l'Algoritmo di Rijndael per crittografare i dati e ho messo il file che contiene la chiave ufficiale dentro la cartella App_Data sperando che questa sia effettivamente non raggiungibile da una qualunque richiesta HTTP
Sono persino riuscito con qualche manciata di codice a modificare il provider in questione per adattarlo alla mie esigenze anche se cè qualcosa che non mi piace ... ti posto quel poco di codice che ho scritto
public override void SetPropertyValues(SettingsContext context, SettingsPropertyValueCollection collection)
{
...cut
//al momento del'assegnazione del valore faccio
// check dei null
if (pp.Deserialized && pp.PropertyValue == null)
value = DBNull.Value;
else
{
if (datatype == SqlDbType.VarChar)
{
value = DataCrypter.EncryptString(pp.PropertyValue.ToString());
}
else
{
value = pp.PropertyValue;
}
}
...cut
}
Mentre in lettura ho modificato il seguente metodo
private void GetProfileDataFromTable(SettingsPropertyCollection properties, SettingsPropertyValueCollection svc, string username)
{
...cut
if (!(val is DBNull || val == null))
{
SqlDbType datatype = GetSqlDbTypeFromCLRType(propValue.PropertyValue);
if (datatype == SqlDbType.VarChar)
{
propValue.PropertyValue = DataCrypter.DecryptString(val.ToString());
}
else
{
propValue.PropertyValue = val;
}
propValue.IsDirty = false;
propValue.Deserialized = true;
}
..cut
}
Come si vede dal codice di esempio mi accerto di crittografare (decriptare) solo dati di tipo varchar e nel mio caso va piu che bene
Solo che la cosa che mi incuriosiva particolarmente era come decidere in fase di configurazione del profilo quali siano i dati che necessitano di essere crittografati.
ad esempio se adesso il mio profilo è cosi
<properties>
<add name="Name" type="String" />
<add name="Surname" type="String" />
</properties>
sarebbe carino vista la possibilità di poter criptare i dati di scrivere qualcosa del genere
<properties>
<add name="Name" type="String" Encrypt="true" />
<add name="Surname" type="String" Encrypt="false" />
</properties>
sto forse fantasticando troppo o asp.net permette di fare anche questi piccoli giochi di magia ? :)
Modificato da claudio_dg il 07 luglio 2011 12.17 -