允许人们设置他们的 DNS 以便他们自己的子域名可以路由到我的服务器是否存在安全风险?

允许人们设置他们的 DNS 以便他们自己的子域名可以路由到我的服务器是否存在安全风险?

假设我有一个用 Django 构建并使用 Nginx 部署的 Web 应用程序。

提供一项允许客户请求将子域名指向它的服务是一个好主意吗?

我想到了这一点:

如果我不允许这样做,那么一些公司将不想从

http://mydjangoappmadeupname.com/bigcorporation/

他们宁愿通过

http://service.bigcorporation.com

这将有效掩盖他们正在使用外部资源的事实。

我是否忽略了重大风险?另外,您是否认为在 Django 中设置一些东西来处理它会更容易,允许 Nginx 接受所有域,然后将它们推送到 Django,Django 会过滤掉它们是否被允许,或者每次客户端想要更改时更新我的​​ Nginx 日志会更好?

答案1

至于 DNS 部分,你无法阻止这种情况。我可以愉快地创建指向 google.com、microsoft.com、mydjangoappmadeupname.com 或我想到的任何其他名称的 CNAME 记录。

如果它确实存在安全风险,那是因为你授予一个名称比另一个名称更多的权利。

至于应用程序部分,我肯定会在代码中而不是服务器配置中处理它。应用程序可以愉快地从数据库请求域名并根据该域名执行某些操作(更改 css、登录处理程序等)。如果使用服务器配置来执行此操作,那将是一场维护噩梦。

此外:让服务器做它自己的工作(也就是说,根据你的工作量进行调整,在 Apache 的情况下,这些将是 mpm 设置、最大请求大小等)。让应用程序做它最了解的事情。这意味着普通的 http 服务器不知道 example.com 是否为自定义 css 付费,而 example.net 是否不付费。

风险在于,你的应用程序可能会出现错误。但我看不出你如何设置比在 http 服务器中“响应这些域”更复杂的要求

答案2

我相信你完全可以安全地做这种事情。当然,这有安全风险吗?可能 - 所以它确实存在。我只是想到 Tumblr 和 Posterous 就是这种功能似乎非常可用的例子。

就我个人而言,我喜欢在 Web 应用程序中处理此逻辑的想法。我认为这可以帮助您通过 Web 服务器配置来浏览安全漏洞,并且可以更轻松地在不同的 Web 服务器之间切换(如果您愿意的话)...或者至少可以更轻松地迁移您的网站。这似乎是您应该能够通过 Django 的 urls.py 文件轻松处理的事情。

话虽如此,我不是信息安全专家。不过,这听起来还是很合理的。我不认为这是一种常见的做法,因为我感觉大多数人对如何使用 DNS 感到困惑。

在服务器之外管理域名会让您损失一些 SSL 证书。但我认为,就您而言,您可以只使用通配符证书,这无论如何都无所谓。当然,我认为通配符证书有点贵。

无论如何,这是我的想法。

相关内容