我们有一个由私有API运行的应用程序。我们有一个承载API的服务器,以及一个管理员面板,工作人员可以在其中登录并更改应用程序的内容。API和管理面板运行在同一个web域上。让我们假设域是appname.com,URL是appname.com/api和appname.com/admin
最初,服务器或域上没有公共网页。然而,我们在appname.com/resetpassword添加了一个密码重置页面,以便忘记密码的应用程序用户可以请求密码重置电子邮件。
在我们添加密码重置页面之后,项目负责人(他不是技术人员)开始担心,将密码重置页面放在与API和管理站点相同的域上,可能会使服务器暴露给黑客,否则黑客可能不会注意到该域,因为它没有其他公共页面。他们要求我们将密码重置页面放在另一个域上,这样黑客就不会知道如何找到主域。
这种逻辑对我来说毫无意义,原因有几点:
但是,项目负责人坚持认为密码重置页不能位于主域中。我认为最简单的解决方案是设置一个域别名,类似于appname-passwordreset.com,它直接和独占地指向密码重置页面。然而,这会给我们买点什么吗?appname.com和appname-passwordreset.com会有相同的IP地址。使用后一个别名是否可以实际防止黑客找到或侵入服务器?
注意:我意识到,另一种选择是只允许用户从应用程序内部请求密码重置电子邮件。然而,密码重置电子邮件必须有一个链接到一个网页,从而使我们回到原来的问题。
发布于 2018-01-18 00:32:29
对于攻击者(或安全研究人员或黑客)来说,找出应用程序的API请求的主机名是非常简单的。有多种技术可以用来解决这个问题。
此时,您可能会变得愚蠢,使用硬编码的IP或DNSCrypt或其他技术,但攻击者也可以使用根设备并转储应用程序的内存,或者根据发送的流量从IP中找出主机名。
如果隐藏您的主机名是被破坏和不受攻击之间的区别,那么您已经失败了,只是不知道而已。认为隐藏主机名是有用的,这只是让您的项目头陷入一种虚假的安全感。
https://security.stackexchange.com/questions/177850
复制相似问题