Почему встроенные блоки JS небезопасны?
Я читаю документ расширения Chrome " Политика безопасности контента (CSP)". Это говорит:
Встроенный JavaScript, а также опасные методы string-to-JavaScript, такие как eval, не будут выполняться. Это ограничение запрещает как встроенные блоки, так и встроенные обработчики событий (например,
<button onclick="...">
)....
Не существует механизма для ослабления ограничения на выполнение встроенного JavaScript. В частности, установка политики сценариев, включающей unsafe-inline, не будет иметь никакого эффекта. Это намеренно.
Почему встроенные <script>
блоки небезопасны? Кто-нибудь может это объяснить? Будет лучше, если вы сможете привести примеры.
Спасибо.
1 ответ
Как говорится на странице:
Первое ограничение уничтожает огромный класс межсайтовых скриптовых атак, делая невозможным случайное выполнение скрипта, предоставленного злонамеренной третьей стороной.
По сути, любой загружаемый вами скрипт должен находиться в отдельном файле, доступном локально для расширения. Это предотвращает загрузку сторонних сценариев, которые вставляются на вашу страницу или включают их, например:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
Например, если у вас есть форма, которую пользователь может заполнить. Пользователь может ввести тег сценария с некоторым количеством JS. Допустим, это как дискуссионный форум. Я захожу и создаю тему, но в ней есть какой-то скрытый JS. Давайте также предположим, что вы не очищаете это перед публикацией. Теперь в моем сообщении есть JS, который будет выполняться каждый раз, когда кто-то просматривает его. Это предотвращает выполнение этого скрипта.