Встроенный JavaScript: понимание того, что считается встроенным, а что нет для лучшего CSP - PullRequest
0 голосов
/ 04 сентября 2018

На самом базовом уровне я понимаю, что встроенный 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?

Какой обходной путь для этого? Встроенные обработчики событий также являются плохой практикой

Согласно этой ссылке , мне пришлось бы регистрировать обработчики событий перед закрывающим телом. Например. Я бы назначил каждому элементу на странице определенный идентификатор и 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?

...