【发布时间】:2020-07-03 21:26:15
【问题描述】:
好的,是的,现在是 2020 年,但不要笑。我正在尝试更新一些 ASP.NET Web 表单。我的目标是锁定它们,通过应用更严格的内容安全策略 (CSP) 使它们更安全。为此,我使用随机数,而不是允许 unsafe-inline 进行脚本编写。
对于“简单”的网络表单,它运行良好。但是,每当有一个导致回发的 ASP 控件时,我都会遇到问题。当我查看页面源代码时,我看到如下内容:
<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
和
<script type="text/javascript">
function previewFile() {
var preview = document.querySelector('#Body_Main_LogoImage');
var file = document.querySelector('#Body_Main_logoUpload').files[0];
var reader = new FileReader();
reader.onloadend = function () {
preview.src = reader.result;
}
if (file) {
reader.readAsDataURL(file);
} else {
preview.src = "";
}
}
</script>
我相信此代码是由一些 MS Web 表单代码生成的。问题是这些脚本元素都没有我想提供的随机数,所以它违反了我的 CSP(不包括unsafe-inline)。有什么我可以覆盖来自定义此行为的吗?
【问题讨论】:
标签: webforms content-security-policy