Как видно на рис. 20.3, при наличии элемента управления проверкой достоверности вы можете предотвратить ввод пользователями таких имен и паролей, которые могут привести к атакам внедрением SQL. В дополнение к применению параметризованных SQL-запросов (представленных в главе 7), вы всегда должны использовать элементы управления проверкой достоверности, чтобы снизить риск подобного рода атак на ваши приложения.

Последний шаг при создании страницы регистрации — написание кода проверки удостоверений по значениям, введенным пользователем. Необходимый для этого код нужно добавить в событие Click кнопки Login. Поскольку следующее событие Click использует удостоверения, хранящиеся в файле web.config, в этом случае проверка довольно проста:

protected void LoginAction_Click(object sender, EventArgs e)
{
  Page.Validate();
  if (!Page.IsValid) return;

  if (FormsAuthentication.Authenticate(
        UsernameText.Text, PasswordText.Text))
  {
    // Создать мандат, добавить cookie-набор к ответу,
    // и перенаправить на исходную запрошенную страницу
    FormsAuthentication.RedirectFromLoginPage(UsernameText.Text, false);
  }
  else
  {
    // Имя и пароль пользователя неправильны
    LegendStatus.Text = "Неверное имя пользователя или пароль!";
  }
}

На заметку! Поскольку аутентификация форм использует стандартные формы HTML для ввода удостоверений, имя и пароль пользователя передаются по сети в виде простого текста. Это представляет собой очевидный риск для безопасности — любой, кто перехватит сетевой трафик, сможет прочитать имена и пароли, введенные в форме регистрации. По этой причине настоятельно рекомендуется шифровать трафик между браузером и сервером, используя для этого SSL (как описано в главе 19) — по крайней мере, пока пользователь обращается к странице регистрации.

Более того, важно включать условие Page.IsValid в начало этой процедуры. Причина в том, что элементы управления проверкой достоверности по умолчанию применяют JavaScript для проверки на стороне клиента. При вызове Page.Validate() проверка достоверности происходит на стороне сервера. Это важно для браузеров, у которых либо отключена поддержка JavaScript, либо она вообще отсутствует. Таким образом, если вы не включите эту часть, то проверка достоверности не произойдет, если браузер не поддерживает JavaScript или же такая поддержка отключена. Поэтому вы всегда должны включать проверку достоверности в свой код на стороне сервера.

Класс FormsAuthentication предлагает два метода, использованных в этом примере. Метод Authenticate() проверяет специфицированное имя и пароль пользователя по тем именам и паролям, которые хранятся в файле web.config и возвращает булевское значение, говорящее о том, что соответствие найдено.

предыдущая    следующая страница    вначало главы    оглавление

842

Hosted by uCoz