IPv6会帮助形成垃圾邮件发送者吗?
开发web应用程序的一个主要部分是防止滥用,更具体地说是防止垃圾邮件发送者 我刚刚注意到,今天的Spambot管理着申请表格、填写表格、提交表格和重新提交表格(例如,如果CMS在实际获取表格数据之前要求提供更多信息)。。。都来自不同的IPv4地址 首先,有两个附带问题:IPv6会帮助形成垃圾邮件发送者吗?,ipv6,spam,ipv4,Ipv6,Spam,Ipv4,开发web应用程序的一个主要部分是防止滥用,更具体地说是防止垃圾邮件发送者 我刚刚注意到,今天的Spambot管理着申请表格、填写表格、提交表格和重新提交表格(例如,如果CMS在实际获取表格数据之前要求提供更多信息)。。。都来自不同的IPv4地址 首先,有两个附带问题: 他们使用什么技术在几秒钟内通过不同的IP路由属于同一会话(表单提交)的不同请求 我可以编写一个基于IP的哈希来检查请求表单的IP和提交表单的IP是否相同;但是:用户(即非垃圾邮件发送者)是否有正当理由希望从不同的IP提交表单
- 他们使用什么技术在几秒钟内通过不同的IP路由属于同一会话(表单提交)的不同请求
- 我可以编写一个基于IP的哈希来检查请求表单的IP和提交表单的IP是否相同;但是:用户(即非垃圾邮件发送者)是否有正当理由希望从不同的IP提交表单
当IPv4地址在顶层耗尽时,或多或少会有人问这个问题。简单的回答是IPv6可能使阻止垃圾邮件发送者变得更容易,而不是更困难 详细说明:虽然IPv6允许主机循环访问几乎无限数量的隐私地址,从这些地址连接到您的web应用程序,但好消息是,它们地址中的64位网络标识符部分可以相当合理地映射到一个相当静态的订户标识符
另一方面,随着IPv4的发展,形势将很快开始变得相当严峻。随着越来越多的互联网服务提供商开始通过在大规模NAT网关后面聚集订阅者来处理IPv4地址耗尽问题,您将失去将订阅者视为其IPv4地址中每个订阅者都有唯一标识符的能力。在某种程度上,垃圾邮件发送者会利用这一点来对付你,你的选择是切断大量无辜的IPv4用户通过NAT网关进入,而NAT网关中有许多受损主机,或者在事后更好地检测和删除垃圾邮件。好吧,一些用户可能会对http请求使用静态IPv6地址;其他人不会 查看我发布的机器主界面上的[部分]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.
(我遗漏了一些只会让人困惑的其他地址。)
请注意,除了“链接”地址之外,还有一个“公共”地址和一堆“临时”地址(其中大多数是“不推荐的”)
“链接”地址只是接口的链接本地地址,用于各种本地管理聊天。(顾名思义,它只能用于与同一“链路”上的其他主机通信;不能用于要路由的流量。)
如您所见,此地址的接口标识符(右64位的一半)是接口的标识符
显示的其他地址恰好来自我的Sixx提供的子网,2001:4830:16c0::/48
,但不幸的是,由于存在点已关闭,它们现在无法工作
“公共”地址只是将前缀与链接本地地址中相同的接口标识符粘在一起,因此服务器和长时间运行的对等程序通常监听的地址(给出名称)也就不足为奇了
但是那些“临时”地址呢?
现在让我们来看看令人困惑的一点:所有其他地址是干什么的,它们来自哪里
答案可以在中找到。你看,事实证明,在你的IP地址中永远使用相同的接口标识符可以让对手很容易地“关联看似无关的活动”(不需要“跟踪cookies”,也可以让以后独立收集的数据合并)
解决方案是对大多数通信使用临时IPv6地址。在任何给定的时间,其中一个是“首选”地址,用于新的通信,而另一些是“有效”但不是“首选”的,这样在切换到新的“首选”地址时,正在进行的通信不会受到不适当的干扰。没有地址分别在TEMP\u valid\u生存期
或TEMP\u preferred\u生存期
内保持“首选”或“有效”
特别是,建立了以下默认值,这些默认值肯定与我们在这里看到的一致:
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.
由于网络拓扑的变化,在填写表格时,IP地址可能会发生变化,例如,笔记本电脑与火车站的wi-fi服务断开连接,并连接到列车上的wi-fi服务。多宿主主机可能会随机更改源地址或响应路由协议。如果将掩码与/64前缀长度匹配,即忽略地址的主机部分,则很有可能挫败来自单个主机的基本攻击
如果您希望能够处理能够访问更多地址空间(例如a/56或/48)的攻击者,那么您没有理由不能处理这些问题。这个问题的目的是确保我刚刚开始开发的web应用程序在处理IPv4垃圾邮件的同时,为ipv6垃圾邮件做好准备。
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.