Перейти к содержанию

Работа с аутентификационными данными цели

Типы аутентификационных данных

Аутентификация — процедура проверки подлинности введённых пользователем данных для подтверждения доступа.

Пользователь может использовать различные типы аутентификационных данных.

Базовая HTTP-аутентификация

«Базовая» схема HTTP-аутентификации определена в RFC 7617. Учётные данные передаются в виде пар «ID пользователя» + «пароль», закодированных с использованием Base64.

Заголовки запроса

HTTP-заголовки позволяют клиенту и серверу отправлять дополнительную информацию с запросом или ответом. Они могут содержать описание данных и информацию, необходимую для взаимодействия между клиентом и сервером. В HTTP-заголовке содержится не чувствительное к регистру название, а затем после двоеточия непосредственно значение.

Куки — это небольшой фрагмент данных, который сервер отправляет браузеру пользователя. Браузер может сохранить этот фрагмент у себя и отправлять на сервер с каждым последующим запросом. С помощью кук можно сохранить любую информацию о состоянии.

TLS-сертификаты

Цифровой сертификат удостоверяет подлинность веб-сайта и позволяет использовать зашифрованное соединение. Использование сертификатов гарантирует, что данные, передаваемые между пользователями и веб-сайтами или между двумя системами, невозможно прочитать сторонним лицам или системам.

Локальное хранилище

Интернет-хранилище — это программные методы и протоколы веб-приложения, используемые для хранения данных в веб-браузере. Оно представляет собой постоянное хранилище данных, похожее на куки, но со значительно большей ёмкостью и без хранения информации в заголовке запроса HTTP. Для локального хранилища характерно сохранение данных после завершения сессии в браузере.

Взаимодействие

Для всех вышеперечисленных типов аутентификационных данных применимы следующие операции:

  • добавление;
  • обновление;
  • запрос;
  • удаление.

Эти операции доступны для целей через HTTP API в разделе «Target», а также в панели управления.

Важно

Изменение аутентификационных данных для цели не затрагивает уже имеющиеся сканирования.

Проверка валидности аутентификационных данных

Данная проверка осуществляется с помощью механизма проверки аутентификации. Подробнее с принципами работы и конфигурацией можно ознакомиться в разделе «Аутентификация в сканируемых приложениях».

Обновление аутентификационных данных

Периодическое обновление сеанса осуществляется двумя механизмами обновления аутентификационных данных:

Примеры

  • Добавление конфигурации механизма обновления аутентификационных данных с помощью HTTP-запроса для цели http://auth-combined.stands.fuchsia с помощью запроса PATCH /api/targets/:id.

    {
      "authCheckingConfig": {
        "config": {
          "criteria": [
            {
              "interval": "10s",
              "kind": "FAILED",
              "request": {
                "url": "http://auth-combined.stands.fuchsia/health-check"
              },
              "responseConditions": {
                "statusCode": 401
              },
              "rounds": 1
            }
          ]
        },
        "enabled": true
      },
      "regexpAuthRefresherConfig": {
        "config": {
          "request": {
            "body": "{\"username\":\"user2\",\"password\":\"password2\"}",
            "headers": {
              "Content-Type": "application/json"
            },
            "method": "POST",
            "url": "http://auth-combined.stands.fuchsia/signin"
          },
          "responseExtractors": [
            {
              "extractor": "session_token=(.*);",
              "proxyParams": {
                "cookie": {
                  "name": "session_token"
                },
                "hostname": "auth-combined.stands.fuchsia",
                "port": "",
                "scheme": "http"
              }
            }
          ]
        },
        "enabled": true
      }
    }
    
  • Добавление конфигурации механизма обновления аутентификационных данных с помощью браузерного сценария для цели http://juice-shop.stands.fuchsia с помощью запроса PATCH /api/targets/:id.

    {
      "authCheckingConfig": {
        "enabled": true,
        "config": {
          "criteria": [
            {
              "kind": "PASSED",
              "request": {
                "url": "http://juice-shop.stands.fuchsia"
              },
              "responseConditions": {
                "statusCode": 200
              }
            }
          ]
        }
      },
      "browserAuthRefresherConfig": {
        "enabled": true,
        "config": {
          "outputExtractors": [
            {
              "type": "TYPE_COOKIE",
              "selectors": ["token"]
            }
          ],
          "loginScript": {
            "inline": "base64_file"
          }
        }
      }
    }