Open Redirect

易受 Open Redirect 攻击的应用程序:

  • 你的应用程序可以重定向到请求指定的 URL,例如查询字符串或表单数据
  • 执行重定向而没有检查 URL,是否是本地 URL
  1. 用户被欺骗点击了电子邮件中的链接,返回的 URL 地址已经被设置为攻击者的网站

http://example.com/account/login?returnUrl=http://exampie.com/account/login

  1. 用户在真网站上成功的登录,但是被重定向到了攻击者的网站
  2. 用户在假网站上再次被要求登录,输入信息,将用户重定向回真实站点

    ASP.NET Core 中预防 Open Redirect

    方法一 LocalRedirect:
    1. if (!string.IsNullOrEmpty(returnUrl))
    2. {
    3. return LocalRedirect(returnUrl);
    4. }

方法二 Url.IsLocalUrl:

  1. if (!string.IsNullOrEmpty(returnUrl) && Url.IsLocalUrl(returnUrl))
  2. {
  3. return Redirect(returnUrl);
  4. }