【问题标题】:AWS - deployment & security for a PHP + ReactJS frontend & backend appAWS - PHP + ReactJS 前端和后端应用程序的部署和安全性
【发布时间】:2018-02-18 21:09:04
【问题描述】:

希望在这里得到一些指导,鉴于我对 AWS 比较陌生,我会尽可能地介绍该场景。

我有一个用 PHP (Yii2) 和 ReactJS 构建的应用程序。 PHP 应用程序仅作为 RESTful 服务运行。该应用程序分为前端和后端,每个共享共同的 ORM/模型、控制器等,总体思路如下:-

/models
    /frontend
    /backend
    /common

足够标准的模式,就像控制器一样。

我的目标是以 www.thewebsite.com 和 admin.thewebsite.com 的身份运行应用程序。前端将为用户提供登录其帐户的能力,但这将不允许对 admin.thewebsite.com 进行任何访问。我希望为此使用 AWS Cognito 和 DynamoDB 会话。

我的目的是让管理站点得到完全保护,以便在用户已通过身份验证的情况下只呈现登录页面。如果可能的话,我不希望在用户登录之前公开 app.js。

请问是否有某种策略可以在 AWS 中使用来实现这一点?我会再次寻求使用 Cognito 和 DynamoDB 会话,但我想知道 AWS 中是否有针对这种场景的特定范例?这不是一个懒惰的问题,我也不指望其他人为我做这项工作......只是 AWS 提供了如此多不同的服务,我真的不知道从哪里开始。

如果有人可以在这里给我一些建议/指出正确的方向,那就太好了。我看过 AWS 论坛,但它们似乎已经死了。

【问题讨论】:

    标签: php reactjs amazon-web-services security authentication


    【解决方案1】:

    据我了解,您的主要优先事项是允许用户登录 www 子域,但不允许登录管理门户。

    AWS 的服务主要围绕托管和网络,有一些服务可以帮助提高安全性,例如您提到的 cognito 和 aws signature,但您的代码将负责维护两个应用程序之间的安全性和控制。

    【讨论】:

    • 感谢您的回复。我可能没有正确解释它 - 子域将是管理员门户,因此 www.thewebsite.com(前端)和 admin.thewebsite.com(后端/管理员)。两者都将具有登录名 - 用户的前端登录名和员工的后端(管理员)登录名。我对后端登录的主要目标是 1) 使其尽可能安全 2) 除非会话经过身份验证,否则最好不要暴露 app.js。我怀疑使用 PHP 在控制器级别分析会话 cookie 并使用 Cognito 将经过身份验证的用户重定向到登录页面的 SSR 是最好的解决方案。
    • 此外,在前端和后端的控制器级别上运行访问控制将更有资源/时间效率,并且对于 React Router 4 路由上的 isAuthed 功能来说是常见的。
    • 是的,这是代码的责任,除非您想阻止某些国家或 IP 地址甚至加载管理门户,但如果您想使用 cookie、会话或数据库来控制代码中的所有身份验证。 Cognito 为您处理登录,但您仍然需要告诉 cognito 主网站与管理网站的用户不同。
    猜你喜欢
    • 2022-01-28
    • 2022-11-04
    • 2020-11-16
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-13
    相关资源
    最近更新 更多