如何为 System.Web.UI.HTMLControls HTMLForm 实施严格的 CSP?
How to implement strict CSP for System.Web.UI.HTMLControls HTMLForm?
我在向遗留应用程序添加适当的 CSP 时遇到了一些问题。
最初,我在修复 HTMLControls 添加的所有内联事件时遇到问题,因为我不希望策略允许这些事件。我设法通过创建自定义 HTMLTextWriter 来处理 Onclick 和 OnChange 事件并使用 element.AddEventListener.
将它们绑定到适当的处理程序来解决这个问题
现在,问题出现在 HTMLForm 似乎收到值为“javascript:return WebForm_OnSubmit();”的 onsubmit。
<form method="post" action="./MyPage.aspx" onsubmit="javascript:return WebForm_OnSubmit();" id="form1">
...
</form>
这是由旧版应用中的一些自定义验证器引起的。
我的问题是,自定义 html 文本编写器似乎根本无法看到正在编写的表单。唯一可用的部分是表单 ID。
我注意到的事情:
- 表格是自动生成的,它被添加到主文件中,设计器部分会自动更新。
- 后面的代码只有几个属性,用于文化代码信息和样式包的位置,以及一种将样式的 href 属性设置为样式包位置的方法。
如何从 asp.net WebForms 中删除额外的事件处理程序以创建符合 CSP 的应用程序?
我无法找到阻止在 C# 中添加内联事件处理程序的方法。
相反,我使用了一个附加了 nonce 的脚本标签来删除 onsubmit 属性,然后为提交重新添加一个事件侦听器,该侦听器将在剥离后使用 onsubmit 属性的文本。
new Function(form1.getAttribute('onsubmit').replace('javascript:', ''));
form1.removeAttribute('onsubmit');
form1.addEventListener('submit', submitFunc);
我在向遗留应用程序添加适当的 CSP 时遇到了一些问题。
最初,我在修复 HTMLControls 添加的所有内联事件时遇到问题,因为我不希望策略允许这些事件。我设法通过创建自定义 HTMLTextWriter 来处理 Onclick 和 OnChange 事件并使用 element.AddEventListener.
将它们绑定到适当的处理程序来解决这个问题现在,问题出现在 HTMLForm 似乎收到值为“javascript:return WebForm_OnSubmit();”的 onsubmit。
<form method="post" action="./MyPage.aspx" onsubmit="javascript:return WebForm_OnSubmit();" id="form1">
...
</form>
这是由旧版应用中的一些自定义验证器引起的。 我的问题是,自定义 html 文本编写器似乎根本无法看到正在编写的表单。唯一可用的部分是表单 ID。
我注意到的事情:
- 表格是自动生成的,它被添加到主文件中,设计器部分会自动更新。
- 后面的代码只有几个属性,用于文化代码信息和样式包的位置,以及一种将样式的 href 属性设置为样式包位置的方法。
如何从 asp.net WebForms 中删除额外的事件处理程序以创建符合 CSP 的应用程序?
我无法找到阻止在 C# 中添加内联事件处理程序的方法。
相反,我使用了一个附加了 nonce 的脚本标签来删除 onsubmit 属性,然后为提交重新添加一个事件侦听器,该侦听器将在剥离后使用 onsubmit 属性的文本。
new Function(form1.getAttribute('onsubmit').replace('javascript:', ''));
form1.removeAttribute('onsubmit');
form1.addEventListener('submit', submitFunc);