【问题标题】:Track a link click with ampersand and without front-end javascript使用 & 号和不使用前端 javascript 跟踪链接点击
【发布时间】:2020-11-11 21:11:03
【问题描述】:

我在我的 NodeJS 应用程序中提供指向外部网站的链接。这些需要花费大量精力才能找到,我想跟踪点击次数。我更喜欢避免使用前端 JavaScript,因为我在浏览器中禁用了它。到目前为止,我一直在使用查询参数,例如:

router.get('/redir', async (req, res) => {
  let url = req.params.url;
  // my own tracking logic
  // ...
  res.redirect(url);
});

对于已经包含 GET 参数、问号和 & 符号的链接,此代码会失败。我试过这个:

router.get('/redir/:url', async (req, res) => {
  let url = req.params.url;
  res.redirect(url);
});

甚至没有调用路由。

如何跟踪已经包含?&? 的链接点击次数

【问题讨论】:

标签: javascript node.js url redirect url-routing


【解决方案1】:

感谢 cmets,这是一种方法:

router.get('/redir', async (req, res) => {
  let url = req.originalUrl.replace("/redir?url=", "");
  // logic: verify that this redirect is authorized to avoid Open Redirect and phishing.
  if (authorizedUrls.includes(url)) {
    return res.redirect(url);
  }
  return res.redirect("/404");
});

您应该检查该 URL 是否被授权以避免Open Redirect,这是一种高度危险的网络钓鱼方式,列为Common Weakness Enumeration 601

CWE-601:URL 重定向到不受信任的站点(“打开重定向”)

Web 应用程序接受用户控制的输入,该输入指定指向外部站点的链接,并在重定向中使用该链接。这简化了网络钓鱼攻击。 扩展描述 http 参数可能包含 URL 值,并可能导致 Web 应用程序将请求重定向到指定的 URL。通过将 URL 值修改为恶意站点,攻击者可能会成功发起网络钓鱼诈骗并窃取用户凭据。由于修改后链接中的服务器名称与原始站点相同,因此网络钓鱼尝试看起来更可信。

来源:https://serverfault.com/questions/1049139/name-and-severity-of-this-type-of-redirect-fraud/1049141#1049141

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    相关资源
    最近更新 更多