Мой вопрос: может ли кто-нибудь начать атаку xss, изменив свое имя на какую-то вредоносную последовательность символов?
Да. Выход из руля защищает только HTML.
Если вы уже в JS, то вы уязвимы.
Существует два основных подхода c для решения этой проблемы.
Escape JavaScript data
Передайте данные через JSON.stringify
, прежде чем поместить их в JS. Движок JS будет обрабатывать его как литерал.
Обратите внимание, что для строк добавляются кавычки, вам не нужно это делать
onclick="console.log({{name_after_json_stringify}});">
Поместите данные где-то безопаснее, чем в середине JS
, например, в атрибуте data-*
onclick="console.log(this.dataset.name);" data-name="{{name}}">
Я рекомендую второй из этих подходов, так как он проще и более читаемым.