【发布时间】:2012-09-05 08:07:32
【问题描述】:
我已经在网上搜索过,我可以找到两种解决方案:
- 使用 URL-shortner。
- 使用方括号
<>允许插入空格。这仅适用于纯文本电子邮件。
我正在发送包含敏感信息的 HTML 电子邮件,例如密码恢复链接和自动身份验证链接。这些安全链接就其性质而言相当长。很容易超过 70 个字符或对电子邮件正文施加的任意限制。
显然我不能使用任何形式的 URL 缩短,因为它会绕过我用于链接的任何安全加密技术。
我想最大的问题是电子邮件客户端没有很好地包装链接。 CSS3 技术支持漂亮的自动换行,因此 MS Outlook 永远不会支持这一点。
如何使链接不会在视觉上造成干扰,并且在电子邮件客户端出现故障时可能易于复制粘贴?
例子
如果链接似乎不起作用,请尝试将其复制粘贴到您的浏览器: hxxp://发展/#AUTH / YoxOntz0Oj0ExOiJfcmFuG9tbmVzcyI7czoxOTI6kJsYkV0qMGMuZ1pFZVQ5YkRQNDZPR200Unl60dGlpNlhZZC9QcEVeH0lvV2NVVlpWWFcwWlF0VjRyc0p4akYzclJ0GTkJmSlgxco0aEtDS0FuTlBVSXAxUVhCcGdRNGpHMVl5UGZMRFVacDVSQ1BqcU0tKYlNxZ0FqYXpjTkNqTS9LV29xSk4ydGtyeFpNdV0c2VLMERUbEYwc08xUWU5aXR0GOXl0bVFpcjlXeGZjUE100S0o1L1FcmQ4MmhOdm5LUSI7fQ P>
补充说明:
我不希望我的链接过期。如果我希望它们完全过期,我会有几个月的时间框架,而不是几个小时。这些链接不仅仅是密码恢复链接。
【问题讨论】:
-
为什么 URLs 这么长?当我编写密码检索系统时,我刚刚创建了一个在 24 小时内过期的哈希。那就不需要 70 多个字符了。
-
使用生成更短网址的算法? MD5 仍然非常适合。
-
只要你使用加密算法来生成随机值,你如何散列它并不重要。例如,如果您使用openssl_random_pseudo_bytes 生成字符串,您甚至可以只对其进行urlencode 或base64encode。重要的是确保您无法预测字符串并且它有足够的熵来避免暴力攻击。
-
我不能使用
md5,因为 URL 中有可读信息(我已经对示例进行了混淆)。我正在使用 openssl_random_pseudo_bytes 来提供一些加密技术,但由于 URL 包含实际数据,“只是”随机性是不够的。这与使用 URL-shortning 相同。
标签: php html-email