Приложение Heroku аутентифицирует запросы от Cloudmailin

Я использую Cloudmailin в приложении Heroku

CloudMailin позволяет получать входящие сообщения электронной почты в вашем веб-приложении через запрос HTTP POST

В моем случае, Cloudmailin настроен на получение писем, чтобы отправить их в myapp.heroku.com/incoming_url,

Отмечу, что любой может пропустить посредника и POST, чтобы /incoming_url чтобы заставить мое приложение вести себя так, как будто оно получило электронное письмо. Как следствие, мое приложение отправляет электронное письмо, поэтому я опасаюсь, что оно может быть использовано для рассылки спама.

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

1 ответ

Решение

CloudMailin предлагает два способа добиться этого:

  • Хеширование (прекращено и только в оригинальном формате)
  • HTTPS и базовая аутентификация (новый рекомендуемый подход).

Если вы используете оригинальный формат с CloudMailin, то он подписывается с помощью механизма хеширования. CloudMailin делится с вами секретным ключом, который используется для хэширования всех полей, отправляемых через HTTP-пост CloudMailin. Таким образом, вы можете проверить, что сообщение действительно приходит от CloudMailin. Более подробную информацию об этом хешировании можно найти здесь.

Однако в более поздних форматах это было прекращено в пользу использования HTTPS и базовой аутентификации. Алгоритм хеширования может быть немного сложным и сложным для настройки. По этой причине было рекомендовано, чтобы пользователи отправляли запросы на свой сайт через HTTPS и проходили базовую аутентификацию. Затем вы можете использовать что-то вроде:

https://username:password@yourdomain.com/target

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

Другие вопросы по тегам