我在网上搜索了这个,我找到了两个解决方案:
<
>
允许插入空格。这仅适用于纯文本电子邮件。我正在发送包含敏感信息的HTML电子邮件,例如密码恢复链接和自动身份验证链接。这些安全链接本质上很长。容易超过70个字符或对电子邮件正文施加任何限制。
显然我不能使用任何形式的URL缩短,因为它会绕过我用于链接的任何安全加密技术。
我认为最大的问题是电子邮件客户端没有很好地包装链接。 CSS3技术支持漂亮的自动换行,因此MS Outlook无法支持此功能。
我如何制作链接不会在视觉上造成破坏,并且在电子邮件客户端出现故障时可能很容易复制粘贴?
实施例
如果链接似乎不起作用,请尝试将其复制粘贴到您的浏览器: hxxp://发展/#AUTH / YoxOntz0Oj0ExOiJfcmFuG9tbmVzcyI7czoxOTI6kJsYkV0qMGMuZ1pFZVQ5YkRQNDZPR200Unl60dGlpNlhZZC9QcEVeH0lvV2NVVlpWWFcwWlF0VjRyc0p4akYzclJ0GTkJmSlgxco0aEtDS0FuTlBVSXAxUVhCcGdRNGpHMVl5UGZMRFVacDVSQ1BqcU0tKYlNxZ0FqYXpjTkNqTS9LV29xSk4ydGtyeFpNdV0c2VLMERUbEYwc08xUWU5aXR0GOXl0bVFpcjlXeGZjUE100S0o1L1FcmQ4MmhOdm5LUSI7fQ
附加说明:
我不希望我的链接过期。如果我希望它们到期,我将有几个月的时间框架,而不是几个小时。这些链接不仅仅是密码恢复链接。
答案 0 :(得分:18)
您是否尝试过Microsoft专有的分词: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(雅虎没有很好地显示)
虽然这被编辑为包含<p>...</p>
但我强烈反对在HTML电子邮件中使用段落标签,如果间距很重要,因为电子邮件客户端会以不同方式解释这些标签。
答案 1 :(得分:3)
如果你要发送HTML电子邮件,那有什么问题:
... <a href="long url">reset your password</a> ...
如果您发送HTML电子邮件时链接变得严重 - 问题在于您是如何发送电子邮件的,而不是收件人的电子邮件客户端。
超长哈希(它是哈希值,还是加密?)真的有必要吗?使用任何足够长的哈希值,以便在它到期之前不被暴力强迫就足够了。要求用户复制和粘贴显然要包装的字符串不会对用户有所帮助,只是将开发问题推到了用户身上。
答案 2 :(得分:0)
我认为c909aa38-d041-11e1-979c-00247ee09c09
形式的UUID应该绰绰有余,无法进行暴力破解或猜测。
如果以可读形式(16字节信息)显示,UUID需要36个字符,对于电子邮件客户端应该没有问题。如果使用区分大小写的字符,它可以写得更紧凑。重要的是GUID不是可猜测的(例如,没有增加的数字)。为安全起见,您可以阅读/dev/urandom
。
number of possible characters: 0-9, a-z, A-Z = 10 + 26 + 26 = 62
possible combinations: 62 ^ 36 = 3.358e+64
如果您有大量与此URL相关的信息,您可以将信息存储在数据库中,并使用GUID作为获取此信息的密钥。
仍然担心?如果您在数据库中使用缓慢的哈希(如 Bcrypt )存储UUID(如密码),那么对于实际密码而言,对此UUID的强制攻击变得更加容易。