【问题标题】:Clicking Outlook safelink protection links in emails seems to be executing the code twice单击电子邮件中的 Outlook 安全链接保护链接似乎执行了两次代码
【发布时间】:2020-09-18 08:30:45
【问题描述】:

这与编码本身并没有真正的关系,我的项目是在 Laravel 7.1 中,但更多的是在 Outlook 的安全测量中。

基本上我有一个发送包含按钮的电子邮件的功能,它是一个带有令牌的链接和我的 Laravel 项目中执行某些事情的路线(在这种情况下,确认约会取消)。单击该按钮时,它会将用户重定向到显示一条消息的页面,该页面显示约会已成功取消或令牌已过期(因为执行该操作一次最终会从数据库中删除令牌,因此尝试再次执行此操作将失败并显示消息)。

这在测试环境中按预期工作,点击 Gmail 中的相同按钮或复制并粘贴浏览器地址栏中的链接。

但是对于 Outlook 及其带有安全链接保护的屏蔽链接,无法正常工作,一旦单击该按钮,它会将用户重定向到过期的令牌消息,但操作已按应有的方式执行。 发生这种情况是因为 safelink 正在访问该链接并在让用户打开新选项卡之前检查它是否安全,问题是“假”访问使我的应用程序执行正常应执行的操作:(它取消了基于该令牌,并且它从数据库中删除令牌),因此当用户被重定向时,这被视为对链接的第二次访问,并且用户输出的是过期的令牌消息,这当然是误导。

这基本上是任何一次使用链接的问题,并且可能会影响其他应用程序。

这是 Microsoft 最近的一项更改,尽管这在几个月前还有效,但 safelink 并不是什么新鲜事,但他们引入了新的安全功能。其他邮件提供商也可能会发生这种情况,但我刚刚使用 Gmail 进行了测试,但它的效果并不相同。

所以我真的不知道我能做些什么来解决这个问题,有没有办法检测点击是否来自真实用户或其他什么? Laravel 是否采取了措施来克服这个问题?

提前致谢。

【问题讨论】:

  • 您最终找到了一个好的解决方案吗?

标签: php laravel email outlook


【解决方案1】:

Safelink 保护向网站发起 HTTP HEAD 请求以获取它计划重写的 URL,然后重写电子邮件中的 URL 以通过 MS 平台退回。

许多 Web 应用程序处理 HEAD 请求,例如 GET 请求。如果这种情况发生在一次性 URL 上,则 SafeLink 的 HEAD 请求会触发操作,这意味着当浏览器发出“真实”请求时,链接就会过期。

我为此使用的一个解决方案是检查传入请求中使用的 HTTP 方法,并仅在它是 GET 时对其进行操作;返回 405 Method Not Allowed 状态或类似状态(如果是其他状态)。

【讨论】:

    【解决方案2】:

    这种行为已经存在了一段时间。您可以做的最好的事情是提供一个指向用户必须明确单击另一个链接或按钮的页面的链接。

    【讨论】:

    • 所以没有好的解决方案?其他人想出了什么解决方案?
    【解决方案3】:

    我已经有这个问题几天了。经过反复试验,我刚刚通过自己的测试找到了解决方案,您只需要使用您的 Outlook 帐户设置 SMTP 配置。

    使用 PHPMailer

    我之前有这个配置

    $trans = Swift_SmtpTransport::newInstance()
             ->setHost("xxxxxxxxxxx.mail.protection.outlook.com")
             ->setPort(25);
    

    我改成

    $trans = Swift_SmtpTransport::newInstance('smtp.office365.com', 587, 'tls')
             ->setUsername('xxxxx@xxxxxxx') 
             ->setPassword('xxxxxxxxxxxx');
    

    现在,它工作正常。我认为 ATP 又名 SafeLink 保护功能仅在您的组织内未验证电子邮件地址(发件人)时才有效。

    【讨论】:

      猜你喜欢
      • 2020-05-10
      • 2017-08-25
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-03
      相关资源
      最近更新 更多