首页 > 解决方案 > 登录 Azure B2C 页面上的内容安全策略错误

问题描述

Azure B2C 页面在单击登录/重置密码流中不同步骤的下一步/继续按钮时引发内容安全策略错误。如果我在登录的第一步输入电子邮件(或没有电子邮件)并单击下一步按钮,则会引发错误,但如果按 Enter - 则不会出现错误。

图 1:

在此处输入图像描述

原因是,一方面,这些页面上的 CSP 不允许使用内联代码,但另一方面,Azure B2C 插入了一些内联代码。Fe action="javascript:void(0)" 在表单中。

图 2:

在此处输入图像描述

调试 js 代码显示有一行代码阻止( action="javascript:void(0)")在按 Enter 时调用此内联操作,并且在单击 Next 按钮时没有这样的阻止。在不同步骤的表格中有几个这样的地方。

这部分代码由 Azure B2C 生成。更改 CSP 是不可能的,因为它也是在 Azure 端设置的。事实上,这个错误不会阻塞登录流程,但会在每一步引发很多错误

有没有人有同样的问题和建议如何避免它?

标签: azure-ad-b2ccontent-security-policyaad-b2c

解决方案


Javascript 导航action="javascript:void(0)"是为了防止表单的意外提交,因为真正的 submussion 是在验证数据后由 javascript 执行的。
内容安全策略将action="javascript:void(0)"其视为内联脚本并阻止它做同样的事情 - 表单提交预防。
没有违反登录 Azure B2C 页面的逻辑,只是在控制台中出现了一条烦人的消息。

按 Enter 并按 Next 时的不同行为是由于其中一个事件处理程序没有调用event.preventDefault().

因此,您可以完全忽略此 CSP 错误 - 没有任何有用的内容被阻止。此错误是 Azure AD B2B 的“良心”,您可以更改 CSP 或登录表单代码,并添加'unsafe-inline'导致更具破坏性的序列(XSS 功能)。因此,Asure B2B 选择了取其轻巧的做法。

注意:AFAIK 您可以创建“自定义授权页面”,也许它不会出现此错误。


推荐阅读