Intereting Posts

Как работать с длинными ссылками в HTML-письмах

Я искал в Интернете, и я могу найти два решения:

  1. Используйте URL-shortner.
  2. Используйте скобки < > чтобы разрешить вставку пробелов. Это относится только к текстовым сообщениям электронной почты.

Я отправляю HTML-письма, содержащие конфиденциальную информацию, такие как ссылки восстановления пароля и ссылки авто-аутентификации. Эти безопасные ссылки по своей природе довольно длинные. Легко дольше 70 символов или любой произвольный лимит накладывается на органы электронной почты.

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

Я полагаю, что самая большая проблема заключается в том, что ссылки не хорошо переносятся почтовыми клиентами. Хорошая обертка слов поддерживается в технике CSS3, поэтому MS Outlook никогда не поддержит это.

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

пример

Если ссылка не похоже на работу, попробуйте копировать-вставить его в ваш браузер: hxxp: // разработка / # аутентификации / YoxOntz0Oj0ExOiJfcmFuG9tbmVzcyI7czoxOTI6kJsYkV0qMGMuZ1pFZVQ5YkRQNDZPR200Unl60dGlpNlhZZC9QcEVeH0lvV2NVVlpWWFcwWlF0VjRyc0p4akYzclJ0GTkJmSlgxco0aEtDS0FuTlBVSXAxUVhCcGdRNGpHMVl5UGZMRFVacDVSQ1BqcU0tKYlNxZ0FqYXpjTkNqTS9LV29xSk4ydGtyeFpNdV0c2VLMERUbEYwc08xUWU5aXR0GOXl0bVFpcjlXeGZjUE100S0o1L1FcmQ4MmhOdm5LUSI7fQ

Дополнительные замечания:

Я не хочу, чтобы мои ссылки истекали. Если я хочу, чтобы они истекали вообще, у меня был бы промежуток времени, а не часы. Эти ссылки – это не только ссылки для восстановления пароля.

Пробовали ли вы проприетарный Word-break: break-all; ?

 <td style=“word-break:break-all;”> 

Это работало лучше всего для меня (лучшая совместимость между поставщиками):

 <p style="word-break:break-all;"> <font style="word-break:break-all;">hxxp://really_long_link</font> </p> 

Протестировано: MS Office 2007/2010, outlook.com, hotmail.com, gmail.com, yahoo.com (yahoo не отображался красиво)


Хотя это было отредактировано для включения <p>...</p> я бы очень не поощрял использование тегов абзацев в HTML-письме, если интервал импотентен, поскольку клиенты электронной почты интерпретируют их по-разному.

В Html-письмах – используйте html

Если вы отправляете html-электронные письма, что не так:

 ... <a href="long url">reset your password</a> ... 

Если ссылки отправляются при отправке html-писем – проблема в том, как вы отправляете электронные письма, а не почтовый клиент получателя.

Используйте более короткий хеш

Является ли слишком длинным хешем (это хэш, или он зашифрован?) Действительно необходим? Используя любой хеш, который достаточно длинный, чтобы не быть грубым, до того, как он истечет, хватит. Попросить пользователей скопировать и вставить строку, которая, очевидно, собирается обернуть, не поможет пользователю, она просто подталкивает проблему к проблеме пользователя.

Я думаю, что UUID формы c909aa38-d041-11e1-979c-00247ee09c09 должен быть более чем достаточно, чтобы сделать грубое принуждение или догадки невозможным.

UUID требует 36 символов, если отображается в удобочитаемой форме (16 байт информации), что не должно быть проблемой для почтовых клиентов. Его можно записать даже более компактно, если вы используете символы, чувствительные к регистру. Важно, чтобы GUID не были сгенерированы (например, без увеличения числа). Чтобы быть в безопасности, вы можете читать /dev/urandom .

 number of possible characters: 0-9, az, AZ = 10 + 26 + 26 = 62 possible combinations: 62 ^ 36 = 3.358e+64 

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

Все еще обеспокоены? Если вы храните UUID с медленным хэшем, таким как Bcrypt в базе данных (например, с паролем), тогда становится проще грубой силы для фактического пароля, чем для этого UUID.