Просьба оценить безопасность подхода

140
06 июня 2019, 06:30

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

Данные эти я в одностраничном js-приложении (которое оперирует токенами и паролями!) вывожу во фрейм и ещё в кучу мест через .innerHTML.

Перед выводом я везде заменяю символы ', ", <, >, & на их html-представление. Достаточного ли этого для избежания потенциальной js-инъекции и прочего?

Одну переменную я также вывожу из коллекции контроллера angularjs через {{...}}.

Правильно ли я понимаю, что тут на выходе простой текст и такой вывод безопасен и без замены символов?

Answer 1

Через свойство innerText будет надёжней. И самому не надо делать замены спецсимволов

let someBadText = `<div>DIV</div>` 
 
{// https://developer.mozilla.org/ru/docs/Web/API/Node/innerText 
    let el = document.createElement('div') 
    el.innerText = someBadText 
    document.body.appendChild(el) 
} 
 
{// https://developer.mozilla.org/ru/docs/Web/API/Element/insertAdjacentText 
    let el = document.createElement('div') 
    el.insertAdjacentText('beforeend', someBadText) 
    document.body.appendChild(el) 
}

READ ALSO
Как в моём плагине включить/отключить функцию?

Как в моём плагине включить/отключить функцию?

Подскажите плизВ плагине есть функция: при наведении мыши на слайд, слайдер останавливается

173
Поворот изображения за курсором js

Поворот изображения за курсором js

Друзья - подскажите как реализовать такую анимацию

122
глобальная переменная procces is not defined

глобальная переменная procces is not defined

В бэк-енд разработке я новичок и не могу понять почему мой вебпак не может запустить корневой серверный файл из за того что не обнаружена...

109