【问题标题】:How to protect AEM pages and assets in headless architecture in AEM 6.5如何在 AEM 6.5 中保护无头架构中的 AEM 页面和资产
【发布时间】:2022-06-24 03:32:29
【问题描述】:

我在 AEM 中有一些内容,我计划以无头方式将这些内容导出到移动应用程序(反应)中。我正在使用 AEM 内容作为服务,吊索内容导出器(杰克逊)来导出内容。

例如,http://localhost:4502/content/we-retail/language-masters/en/course.model.json 会将一些内容导出到前端应用程序(react 移动应用程序)。我想保护这个 API 调用,我应该只将 json 响应返回给我的前端应用程序(反应移动应用程序)

基本上我想验证谁在调用 AEM。在这种情况下,我想只允许移动(反应)调用 AEM 并希望拒绝所有其他人。如何保护我的 AEM 内容?

我想的一种方法是使用Apache sling 引荐来源网址过滤器在 AEM。如果我们在“允许主机”中不允许移动应用程序 (react),推荐人过滤器将拒绝该请求。这是正确的处理方式吗?如果有任何其他最好的方法来处理这个?使用 Adob​​e Granite OAuth 2.0 服务器怎么样?

请建议我有哪些可用选项来保护无头内容。

  • 我还没有完全理解你的问题。 a) 它是移动应用程序,还是您网站上的 ReactJS 单页应用程序? b) 如果它是一个真正的应用程序,内容加载是一次完成(例如批量构建过程),还是从最终用户设备动态加载? PS:无论如何,解决方案都应该不在 AEM 中,而是在 Dispatcher 中。
  • 它是一个移动应用程序。它不是单页应用程序。从调度程序加载内容,但在这里关注 aem 如何仅允许移动应用程序获取内容。基本上我想限制外部人员连接 aem 页面。

标签: reactjs aem headless sling sling-models


【解决方案1】:

当您放弃应用程序(并且它基于 JavaScript)时,您无法获得完全的安全性。攻击者可以使用越狱手机并调试或反编译您的应用程序。但是你可以很容易地保护你的 API,没有人可以“意外”找到入口。普通黑客也无法获得访问权限。

简单的方法 = SSL + 基本身份验证

确保您的网站只能通过 https (= SSL) 访问。然后只需添加一个很难猜到的 Basic Auth 密码。这很容易实现(在 Dispatcher 和 App 中),开发人员/操作人员仍然可以测试 API。只需确保密码在您的应用程序中被混淆。因此,不要将其存储为纯文本。一个简单的 XOR 加密可能就足够了。

高级方法 = 带有客户端证书的 SSL

您可以使用 SSL 客户端证书(也在 Dispatcher 上实现,而不是在 AEM 中实现),而不是 Basic Auth 密码。这可能有点过度设计,它仍然可能会丢失。但是现在攻击者必须反编译你的应用程序来提取证书。 Basic Auth 密码理论上可以通过其他方式“找到”——或者它可以被暴力攻击。

PS:在这两种情况下,您都需要通过一些入侵检测来监控您的 API。并且您必须能够将新密码或客户端证书分发给合法客户端。

PPS:移动安全是一个巨大的话题。这无法在 StackOverflow 问题中处理。但是要阻止脚本小子爬取您的 API,简单的方法可能就足够了。

【讨论】:

  • 非常感谢您的详细回复。在这两种情况下,AEM 都不会进行任何检查。调度员如何使用客户端证书管理 SSL + 基本身份验证和 SSL?您希望调度员验证基本身份验证案例的用户名和密码吗?你能分享一下这方面的一些参考吗?
  • Dispatcher 只是一个带有 mod_dispatcher 模块的 Apache Webserver,它处理缓存和失效。所以只要参考普通的Webserver文档httpd.apache.org/docs/2.4/howto/auth.html
  • 感谢您的参考。是的,你是对的,调度员不能做任何检查。它用于缓存负载均衡器。 Apache 可以使用客户端证书执行 SSL + 基本身份验证和 SSL。抱歉,我一直怀疑 apache 怎么做这个验证,apache 可以验证用户名和密码吗?
  • Alexander Berndt - 您能否在stackoverflow.com/questions/73152395/… 上提供您的意见?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-05
  • 1970-01-01
  • 1970-01-01
  • 2021-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多