代码之家  ›  专栏  ›  技术社区  ›  Matt

OAuth和网络钓鱼漏洞,它们是否必然地联系在一起?

  •  7
  • Matt  · 技术社区  · 6 年前

    我最近在OAuth上做了不少工作,我不得不说我真的很喜欢它。我喜欢这个概念,也喜欢它如何为用户提供一个低的进入门槛,以便将外部数据连接到您的站点(或者为您提供供外部使用的数据api)。就我个人而言,我总是在要求我直接向他们提供另一个网站的登录名的网站上犹豫不决。OAuth的“web代客钥匙”方法很好地解决了这个问题。

    不过,我(和其他许多人)看到的最大问题是,标准OAuth工作流鼓励钓鱼攻击使用的相同类型的行为。如果你训练你的用户重定向到一个站点以提供登录凭据是正常的行为,那么钓鱼网站很容易利用这种正常行为,而是重定向到他们的克隆站点,在那里他们捕获你的用户名和密码。

    如果有的话,你做了什么来缓解这个问题?

    • 你告诉用户去手动登录到提供网站,没有自动链接或重定向?(但这会增加进入壁垒)

    • 你是否试图教育你的用户,如果是的话,什么时候以及如何教育?用户必须阅读的任何冗长的安全性说明也会增加进入壁垒。

    6 回复  |  直到 15 年前
        1
  •  2
  •   Rook    15 年前

    我相信OAUth和网络钓鱼有着不可分割的联系,至少以OAUth目前的形式是这样的。有一些系统已经到位,以防止网络钓鱼,最著名的HTTPs(暂停笑…),但显然它不起作用。

        2
  •  1
  •   Kevin Granade    13 年前

    你有一个帐户的网站,你被重定向到,他们不应该实施反钓鱼措施,如签名短语和图像?这还利用了用户从通常使用这些措施的银行获得的任何现有培训。

    一般来说,登录页面应该向用户提供用户友好的共享机密,以确认他们登录的站点的身份。

    正如Jingle所指出的,ssl证书可以用于身份验证,但是在这种情况下,用户不能将证书作为OAuth安装过程的一部分直接从站点加载到他们的web浏览器中吗?如果我不确定是否需要与CA建立进一步的信任关系。

        3
  •  1
  •   Anderson Marques    7 年前

    有一些技术可以用来避免或减少网络钓鱼攻击。我列出了一个便宜的选择:

    1. 用户名的使用不确定,避免电子邮件作为用户名。
    2. 包括用户查看其登录历史记录的选项。
    3. QRCode,允许在智能手机等预注册设备中进行身份验证。比如whatsapp网站。
    4. 在登录页面中显示身份验证号码,用户可以在公司官方网站中验证。

        4
  •  0
  •   davek    15 年前

    延伸一下代客泊车的比喻:你怎么知道你可以信任代客泊车,他/她不仅仅是一个试穿的人?你不是真的:你只是根据上下文做出判断(也许是无意识的):你知道酒店,你以前在那里受益过,你甚至可能认出你给钥匙的人。

    同样,当您使用OAuth(或OpenID)登录时,您将用户重定向到他们应该熟悉的站点/URL,因为他们提供的凭据来自他们已知的站点。

        5
  •  0
  •   blowdart    15 年前

    这不仅仅是OAuth的问题,也是OpenID的问题。当然,更糟糕的是,在OpenID中,你给了一个网站你的提供者,如果你还没有一个伪造的网站,那么很容易自动删除这个网站,然后生成一个你也可以指导你的用户的网站。

    幸运的是,没有什么严重的使用OpenID进行身份验证-博客文章,flickr评论只是不是一个有趣的目标。

        6
  •  0
  •   Jingle    14 年前

    像ssl认证一样认证oAuth提供者怎么样?只有经过认证的oAuth提供者才是可信的。但问题是,与ssl认证一样,CA很重要。