azure-ad-b2c - 登录 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 端设置的。事实上,这个错误不会阻塞登录流程,但会在每一步引发很多错误
有没有人有同样的问题和建议如何避免它?
解决方案
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 您可以创建“自定义授权页面”,也许它不会出现此错误。
推荐阅读
- xml - Microsoft Word (OOXML/DOCX) 文档格式验证
- android - 使用edittext的IP地址验证器
- matlab - 根据索引向量切片数据向量
- php - 使用sql按家庭搜索表
- android - 如何在 imageList 上实现 onClickListener
- c - 为什么我只调用一次 fork 会得到多个 SIGCHLD?
- python - 如何滞后熊猫系列并创建新的时间滞后数据框?
- java - 了解失败的 JUnit4 测试?
- python - 我们如何使用 itertools.permutations 以 01012000-31122012 的格式获取日期范围(例如从 Jan 2000 到 Dec 2010 )?
- sql - 插入已知值以及从 JOINS 确定的值