8

我正在考虑将 OpenID 作为我的 PHP 应用程序的登录方法,但有一件事情阻止我继续:如何保护 OpenID 使用者免受滥用?

使用消费者作为代理滥用 OpenID 的示例

滥用包括用请求淹没其他服务器、使用我的应用程序作为代理、将大量下载作为 URL 传递或通过执行大量请求而不必要地减慢服务器速度。

我想我应该对请求实施速率限制,但我应该怎么做呢?可能的攻击者可以使用其他代理或 TOR 绕过 IP 检查。限制允许的提供者会违反 OpenID 的原则吗?

我不希望我的用户是邪恶的,但我想知道在添加另一个可能的攻击媒介之前我需要考虑哪些事情。

如果有关系,我将使用lightopenid作为 PHP 应用程序的后端。

4

3 回答 3

3

您需要将攻击分成两个池。1) 攻击您自己的网站,以及 2) 攻击使用您作为代理的其他人。这些问题都不是 OpenID 的新问题或独有问题。例如,经典的“告诉朋友”电子邮件表单可以自动从代理方的 IP 地址和电子邮件发送垃圾邮件,保护垃圾邮件发送方免受后果,并为他们提供(可能)干净的 IP/电子邮件,而不是已被垃圾邮件保护标记。这主要是通过“验证码”解决的,以防止自动使用表单。

对于针对您自己站点的攻击,这已经被无数次覆盖了。在这里尝试:保护自己免受 DOS 攻击

对于针对他人网站的攻击,许多相同的原则适用于其他问题中提到的。限制身份验证请求,拒绝不合理或格式错误的请求,根据 POST 返回的实际内容验证 Content-Length 标头,当然您始终可以添加经典的“CAPTCHA”以帮助防止使用 OpenID 消费者的自动攻击。

同样与此处的其他建议相反,我不会根据 OpenID TLD 进行限制,而是根据请求方的 IP 地址进行限制。是的,人们可以租用代理 IP,但您不能根据 TLD 公平地限制,因为每个 OpenID 提供商的用户群会有很大差异。您还可以从MaxMind等公司购买已知代理 IP 的数据库。如果用户来自代理 IP,请增加节流的积极性。

于 2011-10-24T21:12:36.750 回答
0

与请求某个域的次数成比例地减慢请求速度。

例如,假设有人试图example.com通过请求许多 URL(如http://example.com/foohttp://example.com/bar、 )来利用您对服务器进行 DOS 操作http://example.com/foobar120382。将所有这些请求视为请求example.com并立即执行第一个请求。在发出下一个请求之前延迟 2 秒,在发出第三个请求之前延迟 4 秒,在发出第四个请求之前延迟 8 秒,在第五个之前延迟 16 秒,以此类推。

人类用户几乎不会注意到这种微小的延迟,但会大大降低您的服务器充当 DOSsing 代理的能力。试想一下,第 12 个请求将被阻止超过一个小时(如果您使用 2 的幂)。

显然,您还应该为常见的大型 OpenID 提供商(如 Google 或 myOpenID)创建某种白名单或灰名单。这些域可能会被非常频繁地请求。

于 2011-10-21T20:39:30.377 回答
0

我会做一些更简单的事情。将 OpenID 端点限制为一组有限的可信端点:Google、wordpress、myopenid、yahoo。它可能会覆盖大多数用户,并且不会让机器人让您的网站产生随机网站的流量。

于 2011-10-25T15:09:18.527 回答