orbeon - Orbeon Forms:有没有办法禁用外部实体的处理以避免 XXE 攻击?
问题描述
在 PenTest 之后,安全团队发现在我们的 Web 应用程序通过 HTTPS 请求提交 Orbeon 表单时可能会受到 XXE 攻击。
他们能够拦截以下 XML:
<!DOCTYPE event-request [<!ENTITY nbsp " ">]>
<xxf:event-request xmlns:xxf="http://orbeon.org/oxf/xml/xforms">
<xxf:uuid>8a89ecf50184eb16f5671301691e0d9457568667</xxf:uuid>
<xxf:sequence>16</xxf:sequence>
<xxf:action>
<xxf:event name="xxforms-blur" source-control-id="pd-section-per-sonalData-control≡xf-474≡pd-birthName-control"/>
<xxf:event name="xforms-focus" source-control-id="pd-section-per-sonalData-control≡xf-474≡pd-birthName-control"/>
<xxf:event name="xxforms-value" source-control-id="pd-section-per-sonalData-control≡xf-474≡pd-birthName-control">Tester<</xxf:event>
<xxf:event name="xxforms-blur" source-control-id="pd-section-per-sonalData-control≡xf-474≡pd-birthName-control"/>
</xxf:action>
</xxf:event-request>
<!ENTITY test "My-OwnEntity">
并通过操纵请求注入一个新的外部实体。这是提交给服务器的 XML:
<!DOCTYPE event-request [<!ENTITY nbsp " "><!ENTITY test "My-OwnEntity">]>
<xxf:event-request xmlns:xxf="http://orbeon.org/oxf/xml/xforms">
<xxf:uuid>8a89ecf50184eb16f5671301691e0d9457568667</xxf:uuid>
<xxf:sequence>16</xxf:sequence>
<xxf:action>
<xxf:event name="xxforms-blur" source-control-id="pd-section-per-sonalData-control≡xf-474≡pd-birthName-control"/>
<xxf:event name="xforms-focus" source-control-id="pd-section-per-sonalData-control≡xf-474≡pd-birthName-control"/>
<xxf:event name="xxforms-value" source-control-id="pd-section-per-sonalData-control≡xf-474≡pd-birthName-control">My-OwnEntity</xxf:event>
<xxf:event name="xxforms-blur" source-control-id="pd-section-per-sonalData-control≡xf-474≡pd-birthName-control"/>
</xxf:action>
</xxf:event-request>
然后正确处理请求,并且实体的值出现在服务器返回的响应中。
根据他们的说法,提出了两种方法/解决方案: 1. 创建允许实体的白名单;或 2. 在所有情况下阻止处理这些外部实体。
但是我在 Orbeon 文档中找不到实现任何这些解决方案的方法(第二种更适合我的具体案例)。有谁知道该怎么做或经历过类似的情况并以不同的方式处理?
谢谢你。
解决方案
推荐阅读
- firebase - Firebase Firestore 结构,用于获取不可见的热门帖子 - 社交
- javascript - 如何从数据库中异步获取数据?
- r - 如何从 clusGap 函数中获取最佳簇数作为输出?
- excel - 目标范围上的 PasteSpecial(格式和值)
- jquery - jQuery 的 .html() 如何处理 JavaScript 字符串?
- python-3.x - Python中的多项式测试与met模块
- haskell - Haskel在函数中输入')'解析错误
- android - 浮动操作按钮拒绝锚定到操作栏
- c++ - 无法访问嵌套类。类的无效使用
- python - 如何从气流中的 Python 运算符返回列表并将其用作 dags 中后续任务的参数