这是一件大事。一个巨大的。这是 7 个月辛苦工作的结晶,截至目前,它终于上线了。完整的背景故事在我 6 月中旬关于 5 大公告的博客文章中,但为了让您免于费力浏览所有内容,这里是悬崖笔记:
- HIBP 中的域名搜索是资源密集型的,且影响日益明显
- 超过一半的财富 500 强企业以及大品牌名人录都在使用此功能
- 我们决定为最大的域名搜索引入定价等级……
- …而且还添加了一些东西,最显着的是通过 API 进行域搜索和正式支持…
- …并删除一些内容,最值得注意的是在完成一次后需要验证域的控制权
自从发布那篇文章以来,我花了 8 周的时间处理数字、编写代码、做大量正式的事情(即使用条款和隐私政策),并定期在我的每周视频中谈论它。我收到了大量非常有用的反馈,其中大部分影响了我们今天在这里推出的服务的状态。感谢所有做出贡献的人,现在让我开始详细解释我们的想法 ?
定价结构
自一月份以来,我们一直在思考构建此项目的最佳方式。我们如何才能获得近十年来免费提供的东西并为其定价合理?这是一个高度主观的词——合理——而且永远不会有完全的共识,所以更多的是关于通过酒吧测试,普通人会看到这个并说“是的,这似乎足够公平”。让我解释一下我们的想法以及我们如何达成定价结构,您将在下面看到:
首先,我们希望大多数域名搜索保持免费。这符合 HIBP 作为社区服务的根本精神,并确保大多数人可以无障碍地访问数据。这也意味着对于大多数人来说,这些变化绝对不会影响他们使用该服务的方式,除非他们想要访问新的部分。
接下来,我们希望将商业产品划分为可管理数量的层。公共 API 密钥有 4 层,我认为这是最好的地方;选项不是太多,但足以在每个选项之间提供良好的分离。然后,我们希望在这 4 层之间大致平均分配属于商业类别的域名数量,因此,这几乎是一个将免费域名之后剩下的域名分为 4 组并定价的问题他们。
最后,我们希望第一商业层能够轻松负担得起,以便大多数人可以毫不犹豫地访问它。我的衡量标准一直是“一杯咖啡的成本”,所以我去了我最喜欢的当地,当我向 EFTPOS 机器的大致方向挥动手表时,检查了我盲目支付的金额:
6 澳元,或者不到 4 美元的美元。这导致我们来到这里(从现在起全部以美元为单位):
计划 | 地址被泄露 | 占所有域的百分比 | 价格/米 |
已关闭 0 | 高达10 | 60% | 自由的! |
被俘 1 | 最多 25 个 | 10% | 3.95 美元 |
被俘2 | 最多 100 个 | 10% | 16.95 美元 |
被击倒 3 | 最多 500 个 | 10% | 28.50 美元 |
被杀 4 | 无限 | 10% | $115.00 |
您在这里看到的是计划名称列表(稍后会详细介绍)、它所覆盖的域的大小(以其中被泄露的电子邮件地址的数量表示)、当前在 HIBP 中受监控的所有域的百分比当然,这代表了每月的价格。与公共 API 一样,如果您每年订阅,则“付费 10 个,获得 12 个”,这意味着“Pwned 1”价格每月仅为 3.25 美元。正如我在之前的帖子中指出的那样,这一切都基于违规中出现的地址数量,我稍后将详细说明一个重要的警告:该数字不包括所有标记为垃圾邮件列表的违规。根据粗略的经验法则,多年来我发现域中大约 20% 的地址已被泄露,因此按照这种逻辑,您需要在域中拥有 55 个实际电子邮件地址,然后才会产生费用。或者最多 130 美元,每月的费用还超过一杯咖啡。 (如果您注重细节并且认为这些百分比太完美,我已根据实际值 59.1%、9.7%、11.3%、10.4% 和 9.4% 对它们进行了四舍五入。)
但是如果您有多个域怎么办?简单 – 一个计划将涵盖该计划范围内的所有域。例如,如果您有 3 个域名,其中一个有 5 个被泄露地址,一个有 20 个,一个有 90 个,您可以获得一个“Pwned 2”计划并覆盖所有这些地址。或者购买一个“Pwned 1”计划并仅涵盖前 2 个计划。这非常简单。
这就是我们最初的想法 – 将其作为一款产品与现有的 API 密钥并存,然后您只需购买您想要的任何一个即可。然后,布伦丹给了我一个更好的主意——将它们结合起来!当我读到他的建议时,你可以看到我脑子里的齿轮在转动,随着时间的推移,我进行了更多的思考,它变成了一个绝妙的主意。它极大地简化了代码库,消除了许多我确信否则会发生的混乱,也许最重要的是,它为您提供了比其他方式更多的东西。美中不足的是价格差距;以上价格比旧版相应API key价格高13%到15%。因此,我们决定在 10 月 8 日之前执行旧价格,然后将所有内容修改为上述新价格。这为拥有现有 API 密钥的每个人提供了 60 多天的通知(无论如何,我们都必须向每个人发送电子邮件,因为使用条款已更改以包含域位),并且对于任何购买 API 密钥的人来说,到处都有关于这一更改的明确措辞。新订阅。另外,它给了每个人一点激励,让他们现在锁定一年,并将增长推迟到 2024 年晚些时候。谢谢布伦丹! ?
这就是理由。之前搜索过的 60% 的域名没有变化,接下来的 10% 的成本可以忽略不计,其余的则根据其规模相应支付更多费用。但我们不仅仅是想降低现有服务的成本,而你每个月只损失几美元却没有任何其他好处,让我们来谈谈新的东西吧!
但是等等,还有更多!
我们现在向所有商业订阅者提供两项全新功能。即使您的域名很小并且被破坏的地址少于 10 个,您仍然可以通过入门级计划访问这些功能,而且它们都是非常不言自明的:API 级访问和正式支持。
API 首先,因为我认为它是最酷的,而且正如它听起来的那样:现在有一个公共端点,您可以向其抛出一个域并获取泄露的别名及其出现的事件的 JSON 响应。它看起来像这样:
GET https://haveibeenpwned.com/api/v3/breacheddomain/{domain} hibp-api-key: [your key]
然后响应如下:
{ "alias1": [ "Adobe" ], "alias2": [ "Adobe", "Gawker", "Stratfor" ], "alias3": [ "AshleyMadison" ] }
如果您已经支付了 API 密钥的费用,您可以立即访问它!相同的密钥,相同的逻辑,通过返回违规元数据的未经身份验证的 API 将返回的违规名称解析为完整内容,唯一的注意事项是,该域必须是您之前证明可以控制的域,并且必须位于其中您的计划大小(例如,您有 Pwned 1 计划,并且您的域不超过 25 个被泄露的地址)。否则:
Subscription upgrade required.
域搜索 API 的另一件事是:只有在加载新的漏洞后才有意义。不停地敲击它是绝对没有意义的,因为你只会得到相同的结果,所以相反,尝试轮询我们刚刚添加的全新 API,以仅返回最近的违规行为(无论如何,它大量缓存在 Cloudflare 中)当有新域名出现时,只需点击域名搜索 API 即可。但由于并非每个人都会这样做,而且域名搜索相对于其他查询来说成本高昂,因此条款和条件包括以下条款:
如果尽管自上次请求以来没有出现新的违规行为,但仍发出过多的 API 请求,则可以将速率限制等控制措施添加到域搜索 API 中。
基于多种因素存在速率限制,如果您请求的频率超过必要的频率,您可能会收到 HTTP 429。我不详细介绍其工作原理的唯一原因是,我希望它能够根据人们使用该服务的方式频繁地进行调整和更改。不过,我现在可以自信地说,如果您按照预期的方式使用域搜索功能 – 在添加新的违规行为后查询每个域 – 您将不会遇到速率限制的问题。
我真的很高兴看到人们如何将这些数据集成到他们现有的工具中,如果您做了一些很棒的事情,请告诉我?
然后,我们通过 Zendesk support.haveibeenpwned.com提供正式支持。该服务于去年 11 月随 API 密钥升级一起推出,自那时起,我们已经回复了近 600 个请求。我们一直在努力进行微调,使知识库能够回答最常见的问题,但肯定仍然需要大量时间来支持出现的问题。添加域名搜索将不可避免地增加搜索量,可能会增加一个显着的数量级,这就是为什么我们只向商业订阅者提供此功能。
这就是新的部分。如果您属于那 60% 的人群,在商业级别之外拥有较小的域,则可以通过订阅每月那杯咖啡的最小可能计划来访问 API 和支持。我们认为这是一个相当合理的平衡,我希望您也这样做。
说到合理,关于那些垃圾邮件列表……
数据泄露不是数据泄露
我提到在每周更新视频中尽可能多地分享,包括预期的定价结构以及如何基于域上被泄露的电子邮件地址的数量。有几个人提出了一个与计算相关的非常重要的观点:数据泄露不是数据泄露,或者更具体地说,HIBP 中存在的泄露不应像其他泄露一样对待,因为它们人为地夸大了 pwn 计数。这些可以排除吗?
Onliner Spambot 事件是最严重的罪魁祸首,就一个联系我的人而言,这导致他的个人域名看起来好像数百个地址已被破坏,而正确的数字却是……零。其他人的域名被固定在 40 个被泄露的地址上,而一旦你解决了这个泄露问题,这个数字就减少到了 13 个。这造成了一种进退两难的局面,因为虽然这些别名确实出现在这次事件中,但它们并不是真实的。地址。但“真实”的电子邮件地址到底是什么?或者更具体地说,如何仅通过字符串判断地址是否真实?十年前,我写过这有多难,并根据该帖子的评论,得出的结论是,唯一确定的方法是发送电子邮件并让收件人执行某种明确的操作,例如单击链接。显然,在这种情况下这是不可行的,但同样,根据人为夸大的指标来为服务定价也是不公平的。
早在 2016 年就添加垃圾邮件列表是正确的做法,但同样,将它们排除在确定定价等级的数量之外也是正确的做法。我们试图在整个系统中使这个逻辑尽可能清晰,并专注于一个简单的用户体验,它是明确的,但如果需要也可以提供更多的洞察力,
如果您对哪些违规行为具体被归类为垃圾邮件列表感兴趣,我已在 API 中添加了一个过滤器,列出了所有违规行为。这是一个未经身份验证的 API ,您可以通过 GET 请求直接在浏览器中加载,在撰写本文时,该 API 已出现 11 次违规,涉及近 14 亿条记录。
该屏幕截图的最后一件事是“启用调试模式”链接,为此,我们需要讨论“域蠕变”。
域名蔓延,一分钱一分货
数据泄露显然是一个持续的事情。过去一直如此,将来也永远如此,这意味着当您今天查看某个域并看到其中有 20 个被破坏的帐户时,明天可能会出现 30 个被破坏的帐户。我认为每个使用 HIBP 的人都明白这一点,但当域名搜索按照可能“蠕变”的指标定价时,它确实会产生一些问题。如果您刚刚支付了一年的 Pwned 1 订阅费用,并且按照此处的示例,您的域中突然出现了超过 25 个被泄露的帐户,并且无法再对其进行搜索,该怎么办?
关于如何处理这个问题的观点始终是显而易见的:人们必须得到他们所付出的代价。我们不希望出现让人失望的情况,我们担心违规行为的有机增加可能会导致该事件。解决方案很简单:当您购买一定规模的订阅时,您当前监控的每个可以在订阅第一天搜索的域仍然可以在订阅最后一天搜索。如果您今天取消了一年的 Pwned 1,并且按照上面的示例,该域明天将超过 25 个被破坏的帐户,那么在接下来的 364 天内,它将产生零影响。
我意识到这个概念可能会令人困惑:域搜索基于域上被破坏的帐户数量,但不包括垃圾邮件列表,然后锁定域的大小,直到下一次订阅续订…唷!上面提到的调试模式链接旨在以原始细节显示所有这些逻辑:
尽管本例中的domain1.com已经增长到26个被泄露的地址,但因为订阅被取消时有22个被泄露的地址,所以这就是它被锁定的数字,直到明年八月续订为止。我希望这足够清楚,如果我们能做得更好,请发表评论。
最后,让我就“域蔓延”情况提供一些原始数据,因为我预见到这会引起超出合理范围的担忧。让我们从大约 60 亿个唯一电子邮件地址的数量开始。在过去 12 个月中,大约添加了 7.23 亿条记录,其中许多记录将针对同一个电子邮件地址(向去年再次被盗的每个人大声喊叫!)此外,在这个数字中,大多数电子邮件地址已经是被pw了。这是一个指向 Twitter feed 的链接,我在其中广播了以前见过的地址的百分比,您会看到该数字通常在 60% 到 70% 的范围内。换句话说,去年我们看到的新地址可能约为 2.5 亿个,约占整个语料库的 4%。所以,是的,随着时间的推移,我们会看到域名进入更高的计划,但只会以 CPI 的速度增长。
最后,在订阅期间锁定域名计数会产生额外的激励,使其成为年度订阅,这超出了“购买 10 个月,获得 12 个月”的现有激励。除此之外,您还可以大幅减少与公司官僚机构打交道的次数。说到这…
满足企业官僚作风
让我从一个故事开始:许多年前,在我在辉瑞公司的漫长任期中,我努力推动我们摆脱传统的托管模式,转向现代云范例,即 Azure 应用服务。我们有一个模型,您可以自助配置资源,每月花费约 50 美元,完全取代了每年花费数万美元的模型。然而,这是一次轻松的胜利……该组织要求供应商评估、合规文书工作和计费模型,这当然对他们有利。但微软的模式是“把你的信用卡放进去,然后就走”,所以我的一位同事就是这么做的。为了节省世界上最大的公司之一的钱,他自己支付了这笔费用,完全是自掏腰包。我的观点是,我已经在内部工作了一段时间,并且我理解组织“因为原因”设置的障碍。我在六月份关于即将到来的域名变更的帖子中谈到了这一点:
老实说,使用公共 API 密钥的经验告诉我,使用商业服务的障碍通常不是金钱,而是企业采购官僚机构。入职文档。供应商评估。税表。
同样,我也有来自外部的经验,经常收到要求投入大量时间进行体力劳动的请求,而组织每月只需支付几美元。这根本无法扩展,而大量提供此类服务的全部意义在于,您只需一张信用卡即可自行设置一切。这是在准备这篇博文时出现的:
我的公司正在寻求购买 API 密钥,以便我们可以在您的网站上自动进行用户查找。我们的采购流程非常复杂,我想知道我们是否可以选择提交采购订单而不是使用 Stripe 信用卡付款方式?
如果这种情况引起共鸣,我对你表示同情,而我自己的公司官僚主义伤痕仍然未愈合!如果我们可以采取更多措施来简化入职流程,而无需为每个客户创建体力劳动,那么请告诉我。我确信还有可以改进的地方,我最不想看到的就是你像我辉瑞的老伙伴一样结局 ?
我们已尽力消除障碍。我们在法律顾问方面投入了大量资金,以确保使用条款和隐私政策正确,并且我们尝试为常见问题解答中的所有常规问题提供答案。 我们甚至公开提供了美国民众经常要求的 W-8BEN-E 美国纳税表。但这对于某些组织来说还不够,这就是为什么我们做与辉瑞经常做的事情完全相同的原因,即提供一个面向企业的流程,我们可以在其中处理所有这些繁琐的事情……并相应地收费。如果是您,请与我联系。
但是关于…?
会有很多“但是……呢?”边缘情况。让我举一些例子以及我们对此的看法:
但是实际上不存在的地址怎么办?
对于大多数数据泄露,电子邮件地址是使用在整个数据集上运行的正则表达式来提取的。您可以在用于处理违规行为的开源电子邮件地址提取器中看到它的样子。那么,什么是电子邮件地址?根据我之前的解释,它是在遇到漏洞时与正则表达式匹配的任何内容。这可能意味着实际上不是域上地址的字符串会被捕获并错误报告。这种情况确实会发生,但实际上没有办法阻止它,而且这种情况非常罕见。
但是,多年前的电子邮件地址在域中仍然显示为遭到破坏怎么办?
这里的论点是,虽然这些是在某一时刻确实存在的真实地址,但由于其年龄或地址不再存在(例如前员工),它们不再真正相关。我对此有哲学和技术观点,前者认为数据泄露是不可改变的。在某个时间点,地址被暴露,这一事实永远无法逆转。至于后一点,这些地址仍然保留在我们需要继续支持的存储结构中,并且每个域查询都需要选取这些地址并将它们返回到处理搜索的代码(HIBP 的设计意味着 Azure 的表存储返回每个域查询的整个分区)。此外,在大多数情况下,这不会改变被破坏帐户的总数,这是衡量组织规模的合理指标,随后也不会改变它们应该适应的定价等级。
但是,我不再关心的旧违规行为会导致我需要更高的计划吗?
就历史的不变性和存储数据的需要而言,这与上一点的答案类似。它仍然是我们确定域大小以及在许多情况下确定拥有该域的组织的最可靠的指标。主要将此衡量视为一种在 HIBP 内分割数据集并使用域搜索功能在组织之间尽可能公平地分配成本的方法。
但对于那些不想使用信用卡的人呢?
我将对此问题给出两部分的答案,首先是认识到纸牌可能会给某些人带来合理的挑战。就在我起草这篇博文时,有人尝试注册公共 API,但在使用不同的卡多次订阅失败后联系了我们:
出于多种原因,我相信这个人是合法的,但 Stripe 报告称,他的银行拒绝了两笔付款,另一笔付款则因 CVC 无效而被拒绝。但使用 Stripe 不仅仅意味着信用卡,还意味着 Apple Pay 和 Google Pay、中国的微信支付、比利时的 EPS、澳大利亚的 Afterpay 以及世界不同地区的大量其他支付机制。很难想象有人无法使用任何可用支付机制的合法情况,这让我想到了第二部分:
我们不支持匿名加密货币并仅依赖法定货币支付的原因是,它很快就会淘汰不良行为者。这就是 2019 年在公共 API 上放置支付网关的全部理由 – 杜绝滥用行为。事实证明,一旦必须通过金融机构设置的 KYC 障碍,人们就不会以自己的身份做出不当行为。是的,信用卡的欺诈性使用总是存在,但 Stripe 非常擅长处理这一问题(我们也为他们的 Radar 服务付费),我们的争议率仅为数千笔交易中的其中之一。
但是[与计算和成本相关的其他原因]呢?
在126亿条记录的语料库中,会出现异常情况。几乎肯定会低于 1%,并且异常不会均匀分布在各个域中;它们对某些人的影响会比其他人更大。想要将其降到零是不可能的,而且也不可能对我所知道的每一个要求纠正异常的请求做出回应。我们能找到的解决这个问题的最实用方法是保持定价结构,使异常情况不太可能产生太大的后果影响。
我们还意识到,有些人会质疑成本,并且由于个人的生活地位或他们工作的组织的性质,这种情况在使用现有公共 API 密钥时经常发生。但这就是我们构建的原因就像我们一样,大多数域名都在免费套餐内,入门级成本就是一杯咖啡,让您可以访问 API 级访问和正式支持等内容。这是我们能想到的最合理、最公平的模型,我希望上面的解释能够体现这一点。
概括
我知道有些人拥有所有域名,但最终导致了几十次数据泄露,他们认为支付 3.95 美元来查看这些域名是不合理的。我知道有些拥有更多数量的组织会觉得这是不合理的,因为类似规模的组织利润更高。但我也知道,近十年来,我一直在完全自掏腰包进行域名搜索,因此,虽然我对现在需要为以前免费的服务付费的任何人表示同情,但我也很高兴合理且经过深思熟虑的模型已经达成。
我很高兴看到人们如何使用新的 API。目前,电子邮件地址搜索每天被请求数百万次,人们已经用它构建了各种令人惊叹的东西,从企业意识活动到帮助保护客户免受帐户接管攻击的工具,再到企业SOC内的集成。在像最后一个这样的情况下,我认为域名搜索 API 将会真正发挥作用,如果您用它做了一些很棒的事情,请与我联系并告诉我。
我知道这是一篇很长的文章,我希望它充分解释了订阅服务的基本原理,并希望您可以用它来做一些令人惊奇的事情?
原文: https://www.troyhunt.com/welcome-to-the-new-have-i-been-pwned-domain-search-subscription-service/