出于安全原因将应用程序拆分为用户和管理部分?

信息安全 网络 应用安全
2021-09-03 07:51:35

我目前正在开发一个需要能够管理用户的应用程序。如果黑客可以访问管理部分,他将可以访问敏感信息和/或可以删除​​用户帐户等。

所以我的想法是将应用程序分成两个应用程序,一个托管在供用户使用的公共服务器上,另一个托管在私有服务器上,只能从特定网络内部访问。

我对应用程序安全性相当陌生,所以有人可以告诉我这是否是个好主意,或者如果不是,为什么?

2个回答

是的,这是个好主意:如果您的应用程序允许这样做,则可以将最小权限原则应用于部署,例如通过确保只能从“安全”网络访问管理界面。

它可以通过在整个堆栈中应用相同的原则来进一步改进:使用操作系统和数据库安全系统来确保应用程序的不同元素只能访问他们真正需要的部分数据。

主要风险是过度设计整个事情:拆分应用程序意味着定义不同部分的机制以共同通信(API)。这通常是应用程序安全性的一个被忽视的方面,可能会增加潜在攻击者的攻击面。

像 Stephane 一样,我同意它可以帮助您的安全,但它有一个例子:

假设您在应用程序的某处有您的“用户数据”,其中包含电子邮件地址、用户名和密码。(可能在数据库中)

您可以创建两个数据库帐户。一个帐户称为“Nobody”,另一个帐户称为“Admin”。

您的正常站点使用“Nobody”,它具有以下能力:

  • 创建一个帐户
  • 询问数据库是用户+密码组合是否正确
  • 更改密码,如果旧密码与新密码一起提供

另一方面,“管理员”拥有对该表的完全访问权限,并且可以为所欲为。

这样做的好处是,即使您的公共站点遭到入侵,攻击者(还)还不能完全访问您的所有散列密码。你的清理工作仍然是一团糟,但比他可以随意读取或修改你的用户帐户的情况要少。

是的,我忽略了很多细节,比如如果有人忘记了密码会发生什么。