当用户请求重设密码时,他们会收到一封带有链接的电子邮件,以生成密码重设代码。该链接有效期为24小时,如果第一个丢失或遗忘,则可以在24小时内重复使用以生成新代码。当用户双击链接时,会生成两个代码,从而导致用户对使用哪个代码感到困惑(第二个代码使第一个代码无效,从而无法使用它的开发方式)。
由于电子邮件中的链接只是html标签,因此我不确定如何防止用户双击该链接。
答案 0 :(得分:0)
这听起来像您正面对the XY problem。您的实际问题是,用户很快就被访问所迷惑,导致刚生成的代码无效,而不是链接可以被单击两次的事实。
从安全角度来看,这类链接实际上应该是一次性的,如果用户想再次执行该操作,则用户应请求新的电子邮件。假设您必须执行此操作,那么我认为最好的折衷方法是将代码生成限制在一个时间范围内,因此,在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>