Противоположность этой функции — чтение данных — выглядит похоже:
protected void LoadCommand_Click(object sender, EventArgs e)
{
DemoDb.Open();
try
{
string SqlText = "SELECT * FROM ShopInfo WHERE UserId=@key";
SqlCommand Cmd = new SqlCommand(SqlText, DemoDb);
Cmd.Parameters.AddWithValue("@key", Membership.GetUser().ProviderUserKey);
using (SqlDataReader Reader = Cmd.ExecuteReader())
{
if (Reader.Read())
{
// Данные в виде простого текста
StreetText.Text = Reader["City"].ToString();
ZipCodeText.Text = Reader["ZipCode"].ToString();
CityText.Text = Reader["City"].ToString();
// Зашифрованные давние
byte[] SecretCard = (byte[])Reader["CreditCard"];
CreditCardText.Text = SymmetricEncryptionUtility.DecryptData(
SecretCard, EncryptionKeyFile);
}
}
}
finally
{
DemoDb.Close();
}
}
Опять-таки, функция использует свойство ProviderUserKey текущего зарегистрированного пользователя MembershipUser для извлечения информации. При успешном извлечении она читает данные в виде открытого текста, а затем извлекает из таблицы базы зашифрованные байты. Эти байты затем дешифруются и отображаются в текстовом поле кредитной карточки. Результат представлен на рис. 25.8.
В этой книге вы уже видели несколько примеров, в которых система безопасности ASP.NET работала "за кулисами", защищая ваши данные. Например, в главе 20 вы видели, как ASP.NET использует шифрование и xeш-коды для обеспечения постоянной защиты данных в cookie-наборах. Вы также узнали, как можно использовать некоторые инструменты для защиты состояния вида. К сожалению, ASP.NET не предоставляет подобного способа для автоматического шифрования строки запроса (который представляет собой дополнительный фрагмент информации, добавляемый к URL для передачи информации от одной страницы к другой).
предыдущая следующая страница вначало главы оглавление
1018