Обеспечение безопасности приложения Twilio

В этой статье, мы увидим, как обеспечить безопасность нашей учетной записи и приложений Twilio с помощью:
  • Включение двухфакторной аутентификации на нашем аккаунте Twilio
  • Проверка того, что запросы к нашему приложению действительно поступают от Twilio
  • Настройка автоматического выключателя для нашей учетной записи и любых субсчетов

Включение двухфакторной аутентификации

Twilio предлагает функцию двухфакторной аутентификации, которую мы можем включить в нашей учетной записи.

Это даст вам гораздо большую безопасность, если кто-то попытается проникнуть в ваш аккаунт, следуя тому, что вы знаете, и тому, что у вас есть модель. Помимо вашего пароля, Twilio отправит вам SMS или позвонит вам, когда будет предпринята попытка входа в систему, и вам потребуется ввести одноразовый пароль.

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

Стоит отметить, что неудивительно, что вы можете довольно легко выполнить двухфакторную проверку подлинности для своего собственного приложения, используя функции вызовов и SMS от Twilio. Проверьте  https://www.twilio.com/docs/howto/two-factor-authentication для помощи с началом работы.

Есть два шага для включения двухфакторной аутентификации:

  1. Сначала вам нужно добавить номер телефона. Это можно сделать с помощью панели инструментов Twilio, щелкнув раскрывающийся список в верхнем правом углу, а затем щелкнув первую запись со своим именем и адресом электронной почты.
  2. Затем нажмите Добавить номер телефона и введите его. Twilio отправит вам SMS (или, если хотите, позвонит вам), тем самым убедившись, что у вас есть номер телефона, который вы указали.

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

Если вашему логину был предоставлен доступ к учетной записи Twilio другого пользователя (то есть к учетной записи, к которой вы получаете доступ из пункта меню « Переключение учетных записей» ), администратор этой учетной записи должен будет повторить эту процедуру.

На этой странице вы сможете выбрать один из двух двухфакторных параметров (вы также можете отключить эту функцию здесь):

  • Один раз на компьютер: это делает доверенное устройство, которое означает, что последующие входы в систему в течение следующих 30 дней не потребуют использования телефона.
  • Каждый вход в систему. Каждый раз, когда вы пытаетесь войти в Twilio, вы должны будете ввести одноразовый пароль со своего телефона.

По завершении нажмите кнопку « Сохранить настройки» внизу страницы, чтобы настроить двухфакторную аутентификацию.

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

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

Проверка того, что запросы приходят от Twilio

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

Без мер аутентификации, если злоумышленник сможет угадать URL-адреса конечных точек в вашем приложении, которые Twilio использует при веб-крюках, он может нанести ущерб. Например, они могут подделать поддельные SMS-сообщения, чтобы они, кажется, приходили от пользователей, или они могли получить доступ к номерам частных телефонов пользователей, которым они могли бы звонить только через предоставленную вами публичную линию.

Есть два пути, которые вы можете предпринять, чтобы предотвратить это, с достаточной степенью уверенности, что запрос действительно исходит от Twilio:

  • Настройка базовой аутентификации HTTP
  • Проверьте подпись запросов, чтобы убедиться, что они подписаны Twilio

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

Базовая аутентификация HTTP просто позволяет вам запрашивать имя пользователя и пароль для доступа к ресурсам вашего веб-сервера.

Если вы работаете с PHP, вам нужно настроить это на уровне веб-сервера. Это возможно на большинстве серверов, в том числе:

  • Apache ()
  • Nginx ()
  • IIS ()

Если вы не используете один из них, вы можете быть практически уверены, что эта опция будет вам доступна; просто взгляните на его документацию или поищите в Интернете.

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


Давайте пройдемся по кусочкам:

  • Если $ _SERVER [‘PHP_AUTH_USER’] не задано, то имя пользователя и пароль не были предоставлены, поэтому мы отвечаем 401 Несанкционированной ошибкой (то есть запросом заголовка, и пользователь предоставляет имя пользователя и пароль, а также WWW-Authenticate заголовок), который будет делать браузеры отображают только Twilio! в диалоге входа.
  • Если предоставленные имя пользователя и пароль совпадают с тем, что хранится в переменных среды TWILIO_USERNAME и TWILIO_PASSWORD соответственно, то мы выполняем действия, требуемые для запроса, и отвечаем с помощью TwiML.
  • Если имя пользователя и пароль были предоставлены, но не соответствовали тем, которые мы ожидали, тогда мы снова отправляем нашу ошибку 401 и связанные заголовки.

Когда мы предоставляем URL для Twilio (например, при инициировании вызова через API REST или при настройке его для входящих вызовов или SMS-сообщений с нашей панели инструментов), мы можем установить имя пользователя и пароль в следующем формате:

Проверка подписи

В качестве альтернативы, вместо использования имени пользователя и пароля, мы можем проверить криптографическую подпись, которую Twilio генерирует, с ее запросами на основе нашего токена аутентификации, который отправляется в заголовке X-Twilio-Signature .

Схема для этого несколько сложна (вы можете найти ее полностью на https://www.twilio.com/docs/security#validating-requests ), но, к счастью, Twilio предоставляет функциональность проверки в своих библиотеках API наряду с примерами кода.

Для этого метода проверки должны быть доступны, вам нужно обслуживать приложения по протоколу HTTPS с Transport Layer Security ( TLS ) включен. На самом деле, вы всегда должны делать это с вашим приложением Twilio, что является хорошей практикой безопасности.

После обнаруженной в октябре 2014 года уязвимости SSLv3, известной как POODLE, вам нужно будет дважды проверить безопасность любой конфигурации SSL. См.  Https://www.digitalocean.com/community/tutorials/how-to-protect-your-server-against-the-poodle-sslv3-vulnerability для деталей.

В PHP мы выполняем следующее:

validate ($ signature, $ url, $ vars)) {
// Этот запрос определенно поступил от Twilio, так что продолжайте дальше ...
} еще {
// Осторожно - это не настоящий запрос от Twilio.
заголовок («HTTP / 1.0 401 Unauthorized»);
}
?>

Здесь мы создаем экземпляр объекта Services_Twilio_RequestValidator из библиотеки API с нашим токеном аутентификации перед передачей запрошенного URL-адреса, тела запроса ( в данном случае $ _GET , но для запроса POST это будет $ _POST ) и подписи.

Затем мы вызываем метод validate validate с этими частями данных, позволяя ему генерировать саму подпись и сравнивая ее с тем, что мы получили в заголовке X-Twilio-Signature . Если он совпадает, запрос является подлинным, но если нет, то он подделывается, а не от Twilio.

Построение выключателя

Использование триггеров использования Twilio позволяет нам создавать автоматический выключатель.

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

Когда указанный порог использования будет превышен, Twilio отправит веб-крючок на URL-адрес по нашему выбору. С помощью этого URL мы можем выполнить ряд действий, будь то отправка нам электронного письма или даже приостановка соответствующей учетной записи.

Здесь мы просто рассмотрим быстрый пример приостановки аккаунта, если он тратит более 50 долларов за один день.

Мы настроим наш триггер использования с помощью панели мониторинга Twilio. Для этого сначала войдите в систему, а затем переключитесь на соответствующий субсчет, для которого вы хотите настроить триггер, нажав свое имя в правом верхнем углу. Далее, нажмите на Subaccounts , а затем нажмите на нужную учетную запись.

Затем нажмите « Использование» на панели навигации, затем нажмите « Триггеры» внизу, а затем нажмите кнопку « Создать триггер использования» .

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

Мы также можем захотеть автоматизировать этот процесс настройки триггера использования с помощью REST API. Например, мы можем захотеть автоматически приостановить только что созданную для клиента субсчету, если их использование выходит за разумные пределы. Чтобы сделать это, мы сделаем то же самое, что делали ранее в PHP:

«;
// Вам нужно убедиться, что библиотека Twilio включена, либо потребовав
// это вручную или загрузка autoload.php Composer
$ client = new Services_Twilio ($ accountSid, $ authToken);
$ account = $ client-> account-> get ($ subaccountSid);
$ Счет-> usage_triggers-> создать (
'Итоговая цена',
'+50',
'Https://twiliobestpractices.com/path/to/trigger_action.php',
массив (
   'Recurring' => 'daily',
   'TriggerBy' => 'цена',
   'FriendlyName' => 'Приостановить, если использует более $ 50 в день'
)
);
?>

Оба варианта делают одно и то же. Они создают триггер, который отправляет webhook, когда наш субсчет тратит более $ 50 в любой день.

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

Ниже приведен пример кода, который используется с только что настроенным триггером использования, который автоматически приостанавливает учетную запись, когда за день уходит более 50 долларов.

В этом примере кода мы также проверяем подлинность запроса, как мы видели ранее, чтобы убедиться, что это подлинный веб-крючок Usage Trigger от Twilio:

// Мы загрузим SID субсчета, к которому относится триггер, и его
// аутентификационный токен из переменных среды, но в действительности вы, вероятно, будете
// загружаем их из базы данных деталей ваших пользователей на основе переданного идентификатора,
// Или что-то вдоль этих линий.
$ subaccountSid = $ _ENV ['TWILIO_SUBACCOUNT_SID'];
$ subaccountAuthToken = $ _ENV ['TWILIO_SUBACCOUNT_AUTH_TOKEN'];
$ url = $ _SERVER ['SCRIPT_URI'];
$ signature = $ _SERVER ['HTTP_X_TWILIO_SIGNATURE'];
$ validator = new Services_Twilio_RequestValidator ($ subaccountAuthToken);
if ($ validator-> validate ($ signature, $ url, $ _POST)) {
   $ client = new Services_Twilio ($ subaccountSid, $ subaccountAuthToken);
   $ client-> account-> update (массив ('Status' => 'приостановлено'));
} еще {
   заголовок («HTTP / 1.0 401 Unauthorized»);
}
?>

Мы показали вам примеры всего этого, используя библиотеку PHP, но вы можете сделать это с любой из библиотек Twilio. Вы также можете сделать это напрямую с помощью REST API с помощью такого инструмента, как Postman.

Итог

В этой статье мы увидели три полезных совета по обеспечению безопасности вашей учетной записи и приложения Twilio:

  • Во-первых, мы включили двухфакторную аутентификацию, чтобы обеспечить безопасность нашей учетной записи, даже если кто-то узнает наш пароль.
  • Затем мы узнали, как убедиться, что запросы, которые получает ваше приложение, действительно поступают от Twilio, либо с помощью базовой аутентификации HTTP, либо путем проверки криптографической подписи запроса.
  • Наконец, мы настраиваем оповещения, чтобы информировать нас и предпринимать соответствующие действия при достижении определенных порогов использования с помощью триггеров использования Twilio, помогая защитить ваше приложение от злоупотреблений и ошибок кодирования.
Ссылка на основную публикацию
Adblock
detector