Как добавить частную ссылку на изображение в HTML-письме - PullRequest
0 голосов
/ 11 мая 2019

У меня есть веб-сервер, который обеспечивает доступ к общедоступным и частным изображениям. Любой может получить общедоступное изображение через URL, например https://example.com/public/images/some-public-image.jpg. Но для частных изображений только владелец изображения может получить к ним доступ по ссылке https://example.com/private/images/some-private-image.jpg, в запросе должен быть указан идентификатор сеанса аутентифицированного пользователя в файлах cookie.

Чтобы добавить общедоступное изображение в содержимое электронной почты, я использую <imag src="https://example.com/public/images/some-public-image.jpg" /> в содержимом электронной почты в формате HTML. Но нельзя использовать личную ссылку, такую ​​как <img src="https://example.com/private/images/some-private-image.jpg" />, потому что она требует аутентификации.

Какова обычная практика добавления личного изображения к содержимому электронной почты?

Можно ли встраивать токен JWT в ссылку, подобную этой

<img src="https://example.com/private/images/some-private-image.jpg?token=AdflkndidgX..." />

Затем сервер проверяет правильность токена перед возвратом изображения.

Есть ли у этого подхода проблемы с безопасностью?

1 Ответ

0 голосов
/ 13 мая 2019

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

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

...