Приложение 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 и ваш сайт знают имя пользователя и пароль, вы можете отклонить этот тип атаки, он также имеет преимущество шифрования передачи вашего сообщения, так что никто не может отслеживать информацию.