5

开发 Web 应用程序的一大(主要)部分是使其防滥用,更具体地说是防垃圾邮件发送者。

我刚刚注意到今天的垃圾邮件机器人设法请求一个表格,填写它,提交它,然后重新提交它(例如,如果 CMS 在实际接收表单数据之前要求提供更多信息)......来自不同的IPv4 地址。

首先,两个侧面问题:

  • 他们使用什么技术在几秒钟内通过不同的 IP 路由属于同一会话(表单提交)的不同请求?
  • 我可以编写一个基于 IP 的哈希来检查请求表单的 IP 和提交表单的 IP 是否相同;但是:用户(即不是垃圾邮件发送者)可能希望从与请求它的 IP 不同的 IP 提交表单是否有正当理由?

然后,对于这个问题的实质:

凭借其几乎无限数量的地址,IPv6 是否会让垃圾邮件发送者更容易让网站管理员和 Web 应用程序开发人员的生活变得悲惨?

也许最终用户都将拥有自己的静态 IPv6,这对我们来说是件好事,因为我们可以更轻松地阻止机器受到攻击的用户。

或者垃圾邮件发送者可能会继续从不同的角度攻击我们,从不使用相同的 IPv6 两次......我不太确定它在技术上是如何工作的,尤其是因为我什至不了解它是如何与 IPv4 一起工作的。

在顶级IPv4地址用尽的那一天,或多或少地提出了这个问题

4

4 回答 4

4

简短的回答是 IPv6 可能使阻止垃圾邮件发送者更容易,而不是更困难。

详细说明:虽然 IPv6 允许主机循环访问几乎无限数量的RFC 4941隐私地址,以便从中连接到您的 Web 应用程序,但好消息是其地址的 64 位网络标识符部分可以相当合理地映射到一个相当静态的订阅者标识符。

另一方面,随着 IPv4 的发展,情况很快就会开始变得非常严峻。随着越来越多的 Internet 服务提供商开始通过在大型 NAT 网关后面聚集订阅者来处理 IPv4 地址耗尽问题,您将无法将订阅者视为每个订阅者在其 IPv4 地址中都有一个唯一标识符。在某些时候,垃圾邮件发送者会利用这一点来对付你,你的选择是切断大量通过 NAT 网关的无辜 IPv4 用户,那里有许多受感染的主机,或者更好地检测和删除垃圾邮件事后。

于 2011-01-28T05:19:52.740 回答
2

好吧,有些用户可能会使用静态 IPv6 地址进行 http 请求;其他人不会。

看看我发布的机器主界面上的 [一些] IPv6 地址:

C:\>netsh interface ipv6 show address interface=4 level=normal
Querying active state...


Interface 4: Local Area Connection

Addr Type  DAD State  Valid Life   Pref. Life   Address
---------  ---------- ------------ ------------ -----------------------------
[...]
Temporary  Preferred     23h59m47s     3h59m47s 2001:4830:16c0:0:f51c:8f47:26ff:596b
Temporary  Deprecated    23h59m47s           0s 2001:4830:16c0:0:8d09:1a8:6039:548b
Temporary  Deprecated    23h59m47s           0s 2001:4830:16c0:0:954b:fd2d:6528:a6b2
Temporary  Deprecated    23h59m47s           0s 2001:4830:16c0:0:4c27:9415:e1cc:5a5a
Temporary  Deprecated    23h59m47s           0s 2001:4830:16c0:0:951f:b93:b21e:1d97
Temporary  Deprecated    23h59m47s           0s 2001:4830:16c0:0:59c3:d575:189e:4fbb
Temporary  Deprecated     6h32m45s           0s 2001:4830:16c0:0:f838:1133:38d0:894c
Public     Preferred     23h59m47s     3h59m47s 2001:4830:16c0:0:20b:dbff:fe26:9fc5
Link       Preferred      infinite     infinite fe80::20b:dbff:fe26:9fc5
No entries were found.

(我省略了其他一些只会混淆的地址。)

请注意,除了“链接”地址之外,还有一个“公共”地址和一堆“临时”地址(其中大部分是“已弃用”)。

“链接”地址只是接口的链接本地地址,用于各种本地管理聊天。(顾名思义,它只能用于与同一“链接”上的其他主机通信;它不能用于要路由的流量。)

naesten@hydrogen:~% ipv6calc -i fe80::20b:dbff:fe26:9fc5 2>/dev/null
Address type: unicast, link-local
Registry for address: reserved
Interface identifier: 020b:dbff:fe26:9fc5
EUI-48/MAC address: 00:0b:db:26:9f:c5
MAC is a global unique one
MAC is an unicast one
OUI is: Dell ESG PCBA Test

如您所见,该地址的接口标识符(右 64 位一半)直接基于接口的 MAC 地址。

显示的其他地址恰好来自我的 Sixxs 提供的子网,2001:4830:16c0::/48但不幸的是,由于存在点已关闭,它们现在无法正常工作。

“公共”地址只是将前缀与与链路本地地址中相同的接口标识符粘贴在一起,并且(给定名称)这是服务器和长时间运行的点对点的地址也就不足为奇了节目通常会听。

但是那些“临时”地址呢?

现在是令人费解的一点:所有这些其他地址是做什么用的,它们来自哪里?

答案可以在RFC 4941 - IPv6 中无状态地址自动配置的隐私扩展中找到。你看,事实证明,在你的 IP 地址中永远使用相同的接口标识符使得攻击者很容易“关联看似不相关的活动”(无需“跟踪 cookie”,并允许合并独立收集的数据稍后的)。

解决方案是对大多数通信使用临时IPv6 地址。在任何给定时间,其中之一是“首选”地址,用于新的通信,还有一些是“有效”但不是“首选”,因此在切换到时不会过度中断正在进行的通信一个新的“首选”地址。没有地址分别保持“首选”或“有效”的时间超过TEMP_VALID_LIFETIMETEMP_PREFERRED_LIFETIME

特别是,第 5 节建立了以下默认值,这些默认值肯定与我们在这里看到的一致:

TEMP_VALID_LIFETIME -- Default value: 1 week.  Users should be able
to override the default value.

TEMP_PREFERRED_LIFETIME -- Default value: 1 day.  Users should be
able to override the default value.
于 2011-06-02T23:05:16.187 回答
2

由于网络拓扑结构的变化,例如笔记本电脑与火车站的 Wi-Fi 服务断开连接并连接到火车上的 Wi-Fi 服务,IP 地址可能会在填写表格时发生变化。多宿主主机可能会随机更改源地址或响应路由协议。

于 2011-11-22T14:14:59.103 回答
1

如果您将滥用与掩码与/64 前缀长度相匹配,即忽略地址的主机部分,您很有可能阻止来自单个主机的基本攻击。

如果您希望能够处理能够访问更多地址空间(例如 /56 或 /48)的攻击者,那么您也没有理由不能处理它。

于 2014-11-29T12:33:11.243 回答