首页 > 解决方案 > 内联 javascript:了解什么是内联,什么不是更好的 CSP

问题描述

在最基本的层面上,我了解内联 javascript 如下:

<script>prompt()</script>

这不算作内联javascript:

<script src="foo.com/bar.js"></script>

但是,还有其他地方可以使用 javascript,例如:

<button onclick="prompt()">
<form onsubmit="prompt()">
<img onerror="prompt()">
<style>{something "property":"javascript:prompt()"}</style>

javascript 存在的所有其他地方也算作内联javascript吗?

解决这个问题的方法是什么?内联事件处理程序也是一种不好的做法

根据此参考资料,我必须在关闭正文之前注册事件处理程序。例如。我会为页面上的每个元素分配一个特定的 ID,并为每个元素分配 AddEventListener。

为了确保我理解这个想法,假设我有一个表单 - 在正文结束之前,我将包含一个添加事件侦听器的 javascript 文件,以便我的 HTML 看起来像这样:

<body>
<form id="theForm" name="theForm" method="POST"></form>
<script src="eventlisteners.js"></script>
</body>

eventlisteners.js 会这样:

var frm = document.getElementById("theForm");
frm.addEventListener('submit', console.log('foo'))

这个对吗?说每个 HTML 内联事件侦听器都有相应的 addEventListener 参数是否也正确?

标签: javascriptcontent-security-policy

解决方案


推荐阅读