express - DNS 预取如何危害安全/隐私?

标签 express http dns helmet.js dns-prefetch

我想要全面解释 DNS 预取带来的安全和隐私风险。已经有其他关于此主题的帖子,但我想要有关我的担忧的最新信息和反馈。提前致谢。

Helmet.js文档说关闭 X-DNS-Prefetch-Control 是为了提高用户隐私,但没有解释为什么 DNS 预取是一个隐私问题。关闭 DNS 预取通常是一个好的默认设置吗?

helmet.dnsPrefetchControl sets the X-DNS-Prefetch-Control header to help control DNS prefetching, which can improve user privacy at the expense of performance. See documentation on MDN for more.

我了解到 DNS 预取是以明文形式完成的,如果存在 MITM 攻击,这可以泄露信息,但该信息是最新的吗?如果是这样,为什么请求是明文的?

This article显示如何通过 DNS 预取绕过 CSP。自 2016 年文章撰写以来,情况有变化吗?

我觉得这个OWASP Cheatsheet应包含摘录,以便您了解我所知道的内容。

The default behavior of browsers is to perform DNS caching which is good for most websites. If you do not control links on your website, you might want to set off as a value to disable DNS prefetch to avoid leaking information to those domains.

最佳答案

(上下文:我在 Firefox 1.0 左右开发了 DNS 预取功能,但有一段时间没有直接研究网络安全方面的工作了)。

作为第一个答案,这是基本问题:

1- DNS 的预取并不会大幅提高现实世界中的性能。

DNS 中有很多缓存和优化(足够了,大多数人可能不知道最先进的技术......这可能包括我)。

所以好处通常很小。将此作为首选项/功能似乎没问题,但我认为默认情况下应该关闭它。

2- 当您进行 DNS 预取时,这意味着您可以让其他人决定您的 DNS 查询的去向。想象一下指向“www.evil.com”的广告

启用预取后,即使您尚未查看内容,查看带有添加的页面也会发送 DNS 查询。 DNS 管理员可以以最大化其日志记录的方式设置“evil.com”,这可能允许他们查看您使用的网络。

此外,他们可以自定义主机名,想想:(您的跟踪号码).evil.com

更糟糕的是,未缓存 DNS 的预取 DNS 查询与攻击者分发给您的唯一主机名 (FQDN) 之间存在很强的相关性。

关于express - DNS 预取如何危害安全/隐私?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75587354/

相关文章:

linux - 用于查找机器人元标记值的 Bash shell 脚本

javascript - 在 iFrame 中设置 cookie

ssl - 如何将 Firebase SSL 证书与单独的 DNS 提供商一起使用

heroku - 将 cPanel 根域指向 Netlify

javascript - node.js/ express : Can't set headers after they are sent

javascript - 如何将创建的联系人分配给 Mongoose 中的当前用户?

node.js - 使用 Express 中间件进行每个请求模块配置?

node.js - 使用 express/connect 和 session 存储时如何找到 session ID?

web-services - 415 ionic 2 中不支持的媒体类型 - Web 服务 POST?

python - Python 中的网站压力测试 - Django