Есть ли какие-либо угрозы безопасности от сгенерированного пользователем встроенного CSS - PullRequest
3 голосов
/ 04 ноября 2019
<div style='user input here'></div>

Существуют ли угрозы безопасности для хранения сгенерированного пользователем кода CSS и его вывода. Я знаю, что мы можем сделать это буквально в любом браузере, я просто хочу убедиться, что я помнил обо всем, что должно вызывать беспокойство, позволяя пользователям помещать любой код, который они хотят, в атрибут.

Просто добавив к вопросу дополнительную информацию : Что, если регулярное выражение используется для разрешения только цифр (0-9), букв (az) и, возможно, нескольких других вещей, таких как хэштег (#) для # 000 илискобки (()) и запятые (,), возможно, также и полные остановки (.) для rgba (128, 128, 128, 0.5). проценты (%) тоже?

Если я сделаю регулярное выражение с любым из вышеперечисленных, будет ли это угрозой безопасности? Если так, то какие это будут? А как насчет белого списка только некоторого кода CSS, есть ли стили CSS, которые определенно не представляют угрозы для безопасности?

1 Ответ

2 голосов
/ 04 ноября 2019

Если вы не закодируете строковое значение пользователя, он может использовать структуру html с кавычками.

Например, это ничего не изменит:

<div style="<script>harmfulJavascript();</script>"></div>

Но если выразрешить пользователю прерывать заполнять атрибут html кавычкой, после чего он может добавлять в DOM все что угодно.

Строка пользователя:

"><script>harmfulJavascript();</script></div>

Результат:

<div style="">
    <script>harmfulJavascript();</script>">
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...