如何防止用户双击电子邮件中的 link?
How do I keep a user from double clicking a link in an email?
当用户请求重设密码时,他们会收到一封包含 link 的电子邮件以生成密码重设代码。此 link 有效期为 24 小时,如果第一个代码丢失或忘记,可以在 24 小时内重新使用以生成新代码。当用户双击 link 时,会生成两个代码,导致用户对使用哪个代码感到困惑(第二个代码使第一个代码的开发方式无效)。
由于电子邮件中的 link 只是一个 html 标签,我不确定如何防止用户双击 link。
这听起来像是您面对的是 the XY problem。您的实际问题是用户对快速连续的访问感到困惑,导致刚刚生成的代码无效,而不是 link 可以被点击两次。
从安全的角度来看,这种 link 确实应该是一次性的,如果用户想再次执行该操作,他们应该请求一个新的电子邮件。假设这是你被迫做的事情,我认为最好的折衷办法是将代码生成限制在一个时间范围内,所以在 5-10 秒内访问会导致向用户显示相同的代码,基于服务器的时间。
为此实施任何基于 CSS 的解决方案,它可以在每个电子邮件客户端上运行,这已经足够具有挑战性了(如果可能的话),我怀疑任何有自尊心的电子邮件客户端都不会让你 运行 任何类型的 JavaScript 来拦截事件。
以下内容适用于现代浏览器中的实际网页,但这不仅仅是一个坏主意,如果您尝试使用它也可能无法正常工作在电子邮件中。我在这里提供它只是为了完整起见,表明它在某种程度上是可能的,但请不要依赖它来解决根本问题。
<style>a:focus { pointer-events: none }</style>
<p>This is some text, here's <a href="#try-me">a link</a> you can't double click by the way.</p>
当用户请求重设密码时,他们会收到一封包含 link 的电子邮件以生成密码重设代码。此 link 有效期为 24 小时,如果第一个代码丢失或忘记,可以在 24 小时内重新使用以生成新代码。当用户双击 link 时,会生成两个代码,导致用户对使用哪个代码感到困惑(第二个代码使第一个代码的开发方式无效)。
由于电子邮件中的 link 只是一个 html 标签,我不确定如何防止用户双击 link。
这听起来像是您面对的是 the XY problem。您的实际问题是用户对快速连续的访问感到困惑,导致刚刚生成的代码无效,而不是 link 可以被点击两次。
从安全的角度来看,这种 link 确实应该是一次性的,如果用户想再次执行该操作,他们应该请求一个新的电子邮件。假设这是你被迫做的事情,我认为最好的折衷办法是将代码生成限制在一个时间范围内,所以在 5-10 秒内访问会导致向用户显示相同的代码,基于服务器的时间。
为此实施任何基于 CSS 的解决方案,它可以在每个电子邮件客户端上运行,这已经足够具有挑战性了(如果可能的话),我怀疑任何有自尊心的电子邮件客户端都不会让你 运行 任何类型的 JavaScript 来拦截事件。
以下内容适用于现代浏览器中的实际网页,但这不仅仅是一个坏主意,如果您尝试使用它也可能无法正常工作在电子邮件中。我在这里提供它只是为了完整起见,表明它在某种程度上是可能的,但请不要依赖它来解决根本问题。
<style>a:focus { pointer-events: none }</style>
<p>This is some text, here's <a href="#try-me">a link</a> you can't double click by the way.</p>