我最近在OAuth上做了很多工作,我不得不说我真的很喜欢它。我喜欢这个概念,我喜欢它为用户提供一个低门槛,让您将外部数据连接到您的站点(或者为您提供外部消费的数据apis)。就个人而言,我一直拒绝那些要求我直接向他们提供我的登录信息的网站。而OAuth“网络代客密钥”方法很好地解决了这个问题。
我(以及其他许多人)看到的最大问题是,标准的OAuth工作流程鼓励了网络钓鱼攻击使用的相同类型的行为。如果您训练您的用户将重定向到站点以提供登录凭据是正常行为,那么钓鱼网站很容易利用该正常行为,而是重定向到他们捕获您的用户名和密码的克隆站点。 / p>
如果有的话,你做了什么(或看到过)来缓解这个问题?
您是否告诉用户手动登录提供网站,没有自动链接或重定向? (但这会增加进入门槛)
您是否尝试教育您的用户,如果是,何时以及如何?用户必须阅读的任何冗长的安全性解释也会增加进入门槛。
还有什么?
答案 0 :(得分:2)
我相信OAUth和网络钓鱼它们是无情的联系在一起,至少在OAuth的当前形式中是这样。有一些系统可以防止网络钓鱼,最常见的HTTP(暂停笑声......),但显然它不起作用。
网络钓鱼是对需要用户名/密码组合的系统的非常成功的攻击。只要人们使用用户名和密码进行身份验证,网络钓鱼将始终是一个问题。更好的系统是使用非对称加密进行身份验证。所有现代浏览器都内置了对智能卡的支持。你不能将一张卡片放在某人的钱包中,并且黑客攻击用户的桌面也不会泄露私钥。非对称密钥对不一定是在智能卡上,但我认为它构建的系统比纯粹在软件中实现的系统更强大。
答案 1 :(得分:1)
您在重定向到的网站上有一个帐户,是否应该实施反网络钓鱼措施,例如签名短语和图片?这也利用了用户从例如现有的任何培训。通常使用这些措施的银行。
通常,登录页面应向用户显示用户友好的共享机密,以确认他们登录的网站的身份。
正如Jingle所说,可以使用ssl证书进行身份验证,但在这种情况下,用户无法将证书直接从站点加载到其Web浏览器中,作为OAuth设置过程的一部分?如果已经与该站点建立了信任关系,我不确定是否需要进一步使用CA.
答案 2 :(得分:1)
有一些技术可用于避免或减少网络钓鱼攻击。我列出了便宜的选项:
上面列出的所有选项都高度依赖于用户对信息安全和隐私的教育。仅在第一次身份验证时出现的向导可以帮助实现此目标。
答案 3 :(得分:0)
延长代客比喻:你怎么知道你可以相信男仆,而他/她不仅仅是有人尝试呢?你并不是真的:你只是根据背景做出那种(也许是无意识的)判断:你知道酒店,你以前在那里受益,甚至可能认出你给你钥匙的人。
以同样的方式,当您使用OAuth(或OpenID)登录时,您将用户重定向到他们应该熟悉的站点/ URL,因为他们正在从该站点提供其已知的站点/ URL它们。
答案 4 :(得分:0)
这不仅仅是OAuth问题,也是OpenID的问题。更糟糕的是,对于OpenID,你给了一个网站你的提供者,如果你没有伪造的网站,很容易自动抓取该网站,并生成一个然后引导你的用户。
幸运的是,没有任何严肃的使用OpenID进行身份验证 - 博客文章,flickr评论只不是一个多汁的目标。
现在OpenID正在进行缓解,因为他们开始开发信息卡支持,其中客户端软件形状的固定UI将提供一个安全的身份“钱包”,但MS似乎已经放弃了球他们自己在信息卡上,即使这是他们的(开放)规范。
它不会很快消失。
答案 5 :(得分:0)
如何通过ssl认证来认证oAuth提供商?只有经过认证的oAuth提供商才是值得信赖的。但问题是,与ssl认证一样,CA很重要。