3

我正在阅读一篇关于 Bloom Filters 用法的维基百科文章。文章中提到,谷歌浏览器使用 Bloom 过滤器来检测输入的 URL 是否是恶意的。因为存在假阳性

Google Chrome 网络浏览器使用 Bloom 过滤器来识别恶意 URL。首先根据本地 Bloom 过滤器检查任何 URL,并且只有在命中时,才会对 URL 进行全面检查

我猜全面检查意味着谷歌存储了恶意 URL 列表的严酷表格,并且该 URL 被散列以检查它是否存在于表格中。如果是这种情况,是否最好只使用哈希表而不是哈希表 + 布隆过滤器?

请对此给予启发,我的完整检查版本是否正确???

4

5 回答 5

3

所有恶意 URL 的布隆过滤器足够小,可以保存在您的计算机甚至内存中。因为您输入的几乎所有网站都不是恶意的,所以如果您不为它们做额外的请求会更好,这就是布隆过滤器的用武之地。您可能感觉不到它,但对于慢速互联网连接它非常有用。

于 2013-08-26T19:50:54.457 回答
1

Bloom 过滤器不仅比 Web 查询更小、更快,而且还可以保护 Google 的恶意 URL API 免受巨大工作量的影响。

于 2014-01-22T10:10:08.553 回答
1

布隆过滤器是一种概率数据结构,它告诉我们元素要么肯定不在集合中,要么可能在集合中。与 Hashmap 相比,Bloom filter 占用的空间更少(取决于配置的哈希函数和错误率)。Hashmap 可以确定一个元素是否存在,而bloomfilter 只能确定性地检查一个元素是否不存在。

让我们看一下 Google Chrome 用例。当用户输入一个 URL 时,它应该验证该 URL 是否安全。为了验证 URL,chrome 可以调用 google 服务(内部 google 可以维护任何数据结构来找出这一点)。然而,这种方法的挑战是多方面的。对于在 chrome 上提供的每个 URL 请求,URL 验证都是通过 Google 服务器进行的,这增加了对 google 服务器的额外依赖、网络往返时间以及保持高可用性以验证所有 URL 的要求来自世界各地的 chrome 浏览器的 URL。

由于此数据不会经常更改(可能会在一小时左右更新),因此 chrome 可能已考虑将所有恶意站点数据捆绑为布隆过滤器,并且 google 可能会定期与客户端同步此数据(与恶意站点相比,恶意站点较少)完整的网站。)。当用户在 chrome 中打开一个 url 时,如果该 URL 不存在,它会检查布隆过滤器,它是安全的。如果存在,则布隆过滤器不确定,因此流量会转到谷歌服务器进行验证(与路由所有流量相比,此流量会少得多)。

于 2020-08-15T23:51:13.850 回答
0

据我了解,布隆过滤器可以在有限的空间内有效地存储数据。布隆过滤器的约定是它不会返回误报,但是根据布隆过滤器的向量大小,它可能会返回一些误报。

只是为了确保误报,Google 要么使用散列法,要么将这些 url 发送到他们的服务器,以通过消除将所有 url 发送到他们的服务器的负载来重新检查那里的 url。

于 2014-02-09T02:45:28.267 回答
0

Google 将列出的恶意 URL 过滤器存储在 Bloom-Filter 中。

看这里:

于 2021-12-08T21:35:44.477 回答