让我们说,我有一个Web应用程序,build在Django和Nginx的部署。
提供允许客户请求指定子域的服务是一个好主意吗?
我想到了这个:
如果我不允许这样做,那么一些公司不会想要访问该服务
http://mydjangoappmadeupname.com/bigcorporation/
他们宁愿访问它
http://service.bigcorporation.com
这将有效地掩盖他们正在使用外部资源。
有没有我俯视的重大风险? 你也认为在Django中设置处理它会更容易,允许Nginx接受所有的域,然后将它们推送到Django,如果允许或不允许,它会过滤掉,或者更好我的Nginx日志每次客户想要这个改变?
关于DNS部分,您无法阻止这一点。 我可以愉快地做出将指向google.com,microsoft.com,mydjangoappmadeupname.com或任何其他名称的CNAMElogging。
如果这确实是一种安全风险,那就是这样,因为你给予某个名称更多的权利。
关于应用程序部分,我一定会在代码中处理,而不是在服务器configuration。 该应用程序可以愉快地从数据库中请求域名,并根据这些(改变CSS,login处理程序,不pipe)。 这对服务器configuration来说是一个相当维护的噩梦。
此外:让服务器做它的服务器的东西(这意味着,调整你的工作量,在Apache的情况下,这将是MPM设置,最大请求大小等)。 让应用程序知道最好的东西。 这意味着一个普通的http服务器没有想法wether example.com支付有一个自定义的CSS和example.net不支付。
风险只是你在应用程序中引入错误。 但是我看不出在http服务器上如何设置比“响应这些域”更复杂的需求
我相信你完全可以安全地做这种事情。 当然,这是一个安全风险? 也许 – 现在根本就是这样。 我只是想到Tumblr和Posterous作为这种function似乎非常有用的例子。
就我个人而言,我喜欢在Web应用程序本身中处理这个逻辑的想法。 我认为这可以帮助你通过你的networking服务器configuration浏览远程安全漏洞,并且可以更容易地交换不同的Web服务器,如果你想…或者你至less可以移植你的站点。 看起来像你应该能够通过Django的urls.py文件轻松处理。
这说,我不是一个信息的家伙。 尽pipe如此,我听起来仍然健康。 我不认为这是常见的做法,因为我知道大多数人对如何使用DNS非常困惑。
通过在服务器之外pipe理域来丢失某些东西,这与SSL证书有关。 但是我认为在你的情况下,你可以拥有一个通配证书,而且无论如何也不重要。 当然,我认为通配证书有点昂贵。
无论如何,我的想法。